Play!: заменит ли Slick DDL Evolutions?
Это может быть глупый вопрос, но я новичок в Play! и Слик. При использовании Slick table.ddl.create
я заметил, что он не создает эволюцию, но приложение все еще работает.
Это заменяет эволюцию? Могу ли я использовать его в производстве? Должен ли я?
Спасибо заранее.
Ответы
Ответ 1
Оба Slick и Slick DDL Plugin могут генерировать только код для создания или удаления вашей схемы, а не для ее разработки. Таким образом, вам по-прежнему нужна эволюция Play или что-то подобное, чтобы изменить существующую схему на этом пути. В команде Slick мы работаем над решением для миграции (с меньшим приоритетом). Многие части уже есть, но еще не интегрированы. Есть @nafg схема управления DSL: https://github.com/nafg/slick-migration-api и мой один год прототип для инструмента управления версиями базы данных: https://github.com/cvogt/migrations/. Часть генерации кода последнего уже попала в Slick 2.0. Правильная интеграция всех этих функций даст нам исчерпывающее решение для сценариев миграции базы данных типа.
Ответ 2
Slick способен генерировать DDL для ваших определенных таблиц, он не содержит логики, которая делает то, что делает эволюция.
С другой стороны, плагин plug slick содержит SlickDDLPlugin, который будет генерировать и запускать DDL-эволюции для вас при запуске вашего приложения в режиме без prod (например, в режиме воспроизведения). Он также выгружает эти эволюции в вашем conf/evolutions.
Источники, которые обрабатывают эволюции:
https://github.com/freekh/play-slick/blob/master/src/main/scala/play/api/db/slick/plugin/SlickPlugin.scala