Help us shape the future of Go! Take the 2026 Go Developer Survey

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