Итак, у меня есть конкретная проблема, и я не могу найти лучшую практику Spring для этого.
У меня есть экземпляр Spring перед базой данных Postgres.У меня есть объект домена, к которому я добавляю некоторые поля (используя flyway).
По существу, представьте, что у меня есть следующий объект:
Book
last_text_update // 2018-11-25 07:00:00
last_writer // PUBLISHER
is_finished // true
contract_closed_timestamp // NULL
Из этого мы делаем странные вычисления, такие как
"Если last_writer == ИЗДАТЕЛЬ && is_finished == true, вернуть IS_SELLING_IN_STORES"
Как вы можете себе представить, это ужасно, и я рефакторинг его следующим образом:
Book
processedStatus: PUBLISHED/EDITING/PROPOSAL
workStatus: AWAITING_EDITOR_FEEDBACK/AWAITING_CHANGES/FINISHED
etc.etc.
Итак, я подготовил миграции SQL, в которые были добавлены необходимые столбцы состояния.На мой взгляд, у меня есть варианты:
1) Определить все переходы столбцов в необработанном SQL и выполнить эту миграцию на производственном сервере, как и любую другую миграцию.то есть where timestamp = blah and other timestamp = blah, set status as follows
2) Запустите одноразовое пакетное задание, которое циклически просматривает каждый объект и обновляет его.
Кажется, что было бы легче сделать в коде Kotlin через пакетное задание противЯ делаю это в SQL, но какой консенсус по этому поводу?Рекомендуется ли выполнять одноразовое пакетное задание (т. Е. Выполнить ssh для экземпляра и запустить его вручную, запустить его с HTTP через API и т. Д.) Или мне просто нужно сосать его и использовать SQL?