С выходом Go 1.16 появился пакет embed. Теперь файлы миграций не нужно таскать в контейнере рядом с бинарником, их можно зашить внутрь него.
Для миграций SQLite я использую свой велосипед 🚴♀️, который успешно скопировал с
https://github.com/jackc/tern 🤫
Реализация довольно проста. 😏
Файлы с разрешением .sql сортируются, потом каждый файл читается, и в нём ищется дивайдер, который разбивает файл миграции на up/down.
Потом проверяется наличие специальной таблицы, которую мигратор создаёт, для того что бы держать информацию об актуально состоянии схемы.
Проверяем версию схемы, открываем транзакцию и начинаем накатывать. В случае фейла пытаемся откатить назад.
#db #sqlite #go