runner

package
v1.0.0 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 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, toVersion string) error

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

func (*Runner) Up

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

Up читает текущее состояние БД, выбирает pending-миграции через graph.SelectUp, сверяет checksum уже применённых и применяет каждую из выбранных миграций последовательно. Висячая зависимость, замеченная в процессе пачки, прерывает выполнение, не применяя текущую миграцию (ранее применённые в пачке остаются).

Висячая зависимость, обнаруженная на этапе построения графа, по спецификации не отменяет всю пачку: применяются все миграции, не зависящие (транзитивно) от отсутствующей версии, затем возвращается *graph.ErrDangling — CLI выведет его в stdout и завершит процесс с кодом 2.

Jump to

Keyboard shortcuts

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