колонках типа даты и на текущей дате?
Может есть для этого какие-то паттерны?
Я вижу такие способы:
1. По крону апдейтить статусы при наступлении определенной даты.
Минусы:
– Нужно писать джобу. Причем, если данных для обновления будет много, некоторые из них обновятся через какое-то время (к примеру, в случае обновление в полночь некоторые данные обновятся через минуту, а хотелось бы, чтобы это было мгновенно)
Плюсы:
– Легко работать с TypeORM
2. Использовать виртуальное поле для статуса.
Минусы:
– Нужно городить костыли для того, чтобы это нормально работало в TypeORM. (someRepository.create({...}) отдаст инстанс, который содержит только колонки с декоратором @Column(), но если я добавлю этот декоратор на колонку со статусом, эта колонка появится после того, как я сгенерю миграцию.
Плюсы:
– Не нужно писать крон-джоб
Извиняюсь, что в вопросе затронул не только Postgres, а и TypeORM, но это больше просто детали. Хотелось бы узнать лучшие практики работы со статусами и как это лучше всего организовать конкретно в Postgres
Почему бы не сохранять статус сразу при обновлении/вставке записи в таблицу? Или использовать https://www.postgresql.org/docs/12/ddl-generated-columns.html
статус нужно обновлять по наступлению некоторой даты. за ссылку большое спасибо, сейчас посмотрю.
так если его можно вычислить сразу, то лучше и записывать в таблицу тоже сразу а отдавать наружу, если того требует логика, ты можешь после наступления некоторой даты
извините, вот это я не понял: "а отдавать наружу, если того требует логика, ты можешь после наступления некоторой даты"
Помимо предложенного варианта, стандартный способ работы через orm со схемой данных, которая в эту orm плохо ложится - создание view и маппинг этой view в orm вместо таблички. При необходимости модификаций - пишется триггер. Плюсы: можно сильно расширить границы применимости orm (но в неумелых руках это превратится в жирный минус); все подгружаемые данные максимально актуальны без лишних телодвижений; в тривиальных случаях позволяет обойти проблему N+1. Минусы: при модификации схемы надо будет править и view.
Обсуждают сегодня