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 DownOptions ¶ added in v1.0.1
type DownOptions struct {
// To — версия, до которой откатывать (откатываются applied с version > To).
To string
// Steps — откатить N последних applied-миграций по id; >0.
Steps int
// All — откатить все applied. Эквивалент SelectDown с пустым toVersion.
All bool
}
DownOptions — параметры Down на уровне раннера. Параллельная структура gomigr.DownOptions. Раннер ожидает, что фасад уже провалидировал взаимоисключение полей и непустой scope; здесь действует правило приоритета (Steps → To → All), но в норме задано ровно одно поле.
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 или graph.SelectDownSteps и последовательно откатывает каждую.
Раннер ожидает, что фасад уже провалидировал opts: задано ровно одно из To/Steps/All. Если задано несколько — приоритет Steps → To → All; если ничего — раннер ничего не делает и возвращает nil (валидация на верхнем уровне обязана не пропустить такой кейс).
func (*Runner) Up ¶
Up читает текущее состояние БД, выбирает pending-миграции через graph.SelectUp, сверяет checksum уже применённых и применяет каждую из выбранных миграций последовательно. Висячая зависимость, замеченная в процессе пачки, прерывает выполнение, не применяя текущую миграцию (ранее применённые в пачке остаются).
Висячая зависимость, обнаруженная на этапе построения графа, по спецификации не отменяет всю пачку: применяются все миграции, не зависящие (транзитивно) от отсутствующей версии, затем возвращается *graph.ErrDangling — CLI выведет его в stdout и завершит процесс с кодом 2.
type UpOptions ¶ added in v1.0.1
type UpOptions struct {
// To — верхняя граница version (включительно). Пустая строка — без границы.
To string
// Steps — ограничение количества применяемых pending-миграций (без учёта
// докачанных транзитивных зависимостей). 0 — без ограничения. Раннер
// предполагает, что Steps >= 0 (валидация — в фасаде).
Steps int
}
UpOptions — параметры Up на уровне раннера. Параллельная структура gomigr.UpOptions, объявленная здесь, чтобы пакет runner не зависел от корневого пакета (избегаем кросс-импорта). Фасад gomigr конвертирует публичные опции в эти.