Documentation
¶
Overview ¶
Пакет runner — внутренний пакет, выполняющий пачку миграций. Делает up/down, обрабатывает checksum_mismatch и висячие зависимости в процессе пачки. Не входит в публичный API библиотеки.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Runner ¶
type Runner struct {
// contains filtered or unexported fields
}
Runner объединяет store и логгер для последовательного применения/отката миграций.
func New ¶
New собирает Runner. userName — итоговое значение applied_by. При пустой строке резолвится через os/user.Current() → "unknown" (ENV-чтения нет — им занимается CLI, библиотека ENV не трогает).
func (*Runner) ApplyBatch ¶
func (r *Runner) ApplyBatch(ctx context.Context, pending []*parser.Migration, inBatch map[string]bool) error
ApplyBatch применяет уже отобранную пачку pending-миграций. inBatch на входе должен содержать множество уже применённых до этого момента версий (для проверки depends-on перед каждым шагом). Функция мутирует inBatch по мере применения миграций.
func (*Runner) Down ¶
Down читает состояние БД, выбирает миграции к откату через graph.SelectDown и последовательно откатывает каждую.
func (*Runner) Up ¶
Up читает текущее состояние БД, выбирает pending-миграции через graph.SelectUp, сверяет checksum уже применённых и применяет каждую из выбранных миграций последовательно. Висячая зависимость, замеченная в процессе пачки, прерывает выполнение, не применяя текущую миграцию (ранее применённые в пачке остаются).
Висячая зависимость, обнаруженная на этапе построения графа, по спецификации не отменяет всю пачку: применяются все миграции, не зависящие (транзитивно) от отсутствующей версии, затем возвращается *graph.ErrDangling — CLI выведет его в stdout и завершит процесс с кодом 2.