runner

package
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 15, 2026 License: MIT Imports: 9 Imported by: 0

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

func New(s *store.Store, logger *slog.Logger, userName string) *Runner

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

func (r *Runner) Down(ctx context.Context, all []*parser.Migration, opts DownOptions) error

Down читает состояние БД, выбирает миграции к откату через graph.SelectDown или graph.SelectDownSteps и последовательно откатывает каждую.

Раннер ожидает, что фасад уже провалидировал opts: задано ровно одно из To/Steps/All. Если задано несколько — приоритет Steps → To → All; если ничего — раннер ничего не делает и возвращает nil (валидация на верхнем уровне обязана не пропустить такой кейс).

func (*Runner) Up

func (r *Runner) Up(ctx context.Context, all []*parser.Migration, opts UpOptions) error

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 конвертирует публичные опции в эти.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL