// Package migrations — шаги схемы базы. // // Шаг лежит своим файлом, имя файла начинается версией, и **применённый шаг не // переписывается** — только новым файлом. Инвариант проекта держится так же, как // держался прежде: изменение схемы это новый шаг, а не правка уехавшего. // // Шаги лежат отдельным каталогом, а не файлом внутри пакета хранилища, по // внешней причине: сверка документов ловит изменённый шаг схемы при нетронутом // `docs/database.md` по префиксу пути (`.av-dev.toml`, ключ `migrations` секции // `[docs]`), а префикс наводится только на каталог. // // Регистрация идёт **перечнем**, а не глобальным списком библиотеки: провайдер // заводится в точке входа и получает этот перечень доводом, поэтому два // провайдера в одном процессе — например, сервис и проверка — не спорят за общее // состояние. package migrations import ( "github.com/pressly/goose/v3" ) // All — шаги схемы в порядке версий. // // Порядок исхода от порядка этого перечня не зависит: библиотека сортирует шаги // по версии сама. Перечень собран ради того, чтобы шаг, добавленный файлом и // забытый здесь, не оказался незамеченным: незарегистрированный шаг не // накатывается вовсе. func All() []*goose.Migration { return []*goose.Migration{ goose.NewGoMigration( 202608220002, &goose.GoFunc{RunTx: up202608220002}, &goose.GoFunc{RunTx: down202608220002}, ), } }