> Хуки - в принципе странная хрень. Я в транзакции серию запросов делаю или триггеры юзаю.
как по мне, хуки - это те же самые триггеры, только на стороне приложения, а не бд
их легче отслеживать, так как они лежат в vcs, легче менять и они будут всегда работать (имеется ввиду, что исключается случай, когда какой-то кретин удалит триггер с бд)
также на хуках можно писать комплексные решения, чего не сделаешь на триггерах.
правда это скорее будет не совсем хорошо, но такая возможность есть
но, тем не менее, заслуживают на жизнь в некоторых кейсах. Главное не переборщить
> имхо это проблема любого embedded-языка. Если в ноде из JS вызывать shell или рендерить html-фрагменты, то тоже выгялидит жутко. Я большие запросы тоже в raw sql держу, чтобы код читался лучше. Одна длинная стринга с SQL всегда будет читаться лучше, чем суп из
.a(‘bcd’).d(‘efg’)...
нет. если у вас настроен линтер, то адекватно отображается чейнинг (если конечно, он действительно не состоит из оверсложных действий).
ну так а если делаешь то же самое, но на плюсах или шарпах, разве не также само используешь билдер? не совсем понял, причем тут js вообще, я привел конкретно фичу ормки, что можно юзать ее методы, а можно писать костыль в виде скл билдера, хотя на скле легче
> такое нормально нигде не работает. Ни в Java / Hibernate, ни в Ruby / ActiveRecord, ни в Python / SqlAlchemy. Есть один рабочий способ - триггеры в базе, я всегда так и делаю.
во первых, хотел сказать, что суть не в том, работает или нет, а в том, что в тайпорме четко прописано
Special column that is automatically set to the entity's insertion time. You don't need to write a value into this column - it will be automatically set. Example:
Это означает, что подобный функционал
обязан работатьно по факту получаем или баг, или просто откровенную ложь, что вообще не позволительно
так-с, а теперь давайте посмотрим, как достичь этого в разных тулзах:
https://sequelize.org/master/manual/model-basics.html#timestampsв Hibernate достигается с помощью хуков (не написано, что такой функционал есть)
в ActiveRecord тоже кстати с этим свои приколы, но частично есть обновление колонок:
https://tech.lendinghome.com/keeping-data-in-sync-with-activerecord-updatedat-95bd76955a01аналогично, в SqlAlchemy достигается путем хуков