Данный механизм применяется обычно разработчиками приложения для собственного экземпляра базы данных. Выполнение скриптов
в этом случае сводится к запуску специальных задач Gradle, описанных в скрипте сборки
build.gradle
. Это можно сделать как из командной строки, так и с помощью интерфейса Studio.
Для запуска скриптов создания БД служит задача createDb
. В Studio ей соответствует команда главного меню -> . При запуске задачи происходит следующее:
-
В каталоге
modules/core/build/db
собираются скрипты базовых проектов платформы и скриптыdb/**/*.sql
модуля core текущего проекта. Наборы скриптов базовых проектов располагаются в подкаталогах с числовыми префиксами начиная с 10, скрипты текущего проекта - в подкаталоге с префиксом 50. Числовые префиксы необходимы для соблюдения алфавитного порядка выполнения скриптов - сначала выполняются скрипты cuba, затем других базовых проектов, затем текущего проекта. -
Если БД существует, она полностью очищается. Если не существует, то создается новая пустая БД.
-
Последовательно в алфавитном порядке выполняются все скрипты создания
modules/core/build/db/init/**/*create-db.sql
, и их имена вместе с путем относительно каталогаdb
регистрируются в таблице SYS_DB_CHANGELOG. -
В таблице SYS_DB_CHANGELOG аналогично регистрируются все имеющиеся на данный момент скрипты обновления
modules/core/build/db/update/**/*.sql
. Это необходимо для будущего инкрементального обновления БД новыми скриптами.
Для запуска скриптов обновления БД служит задача updateDb
. В Studio ей соответствует команда главного меню -> . При запуске задачи происходит следующее:
-
Производится сборка скриптов аналогично описанному выше.
-
Производится проверка, все ли базовые проекты имеют необходимые таблицы в базе данных. Если обнаруживается, что БД не инициализирована для работы некоторого базового проекта, выполняются его скрипты создания.
-
В каталогах
modules/core/build/db/update/**
производится поиск скриптов обновления, не зарегистрированных в таблице SYS_DB_CHANGELOG, то есть не выполненных ранее и содержимое которых не отражено в БД при ее инициализации. -
Последовательно в алфавитном порядке выполняются все найденные на предыдущем шаге скрипты, и их имена вместе с путем относительно каталога
db
регистрируются в таблице SYS_DB_CHANGELOG.