migration

package
v0.36.0 Latest Latest
Warning

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

Go to latest
Published: Oct 17, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Package migration parses and validates forward-only declarative migration paths.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ParseAndValidate

func ParseAndValidate(source []byte) (Path, []ValidationError)

ParseAndValidate decodes one strict YAML migration document and reports all detected structural and semantic violations.

Types

type Operation

type Operation struct {
	Kind      string         `yaml:"operation" json:"operation"`
	IssueType string         `yaml:"issueType,omitempty" json:"issueType,omitempty"`
	Field     string         `yaml:"field,omitempty" json:"field,omitempty"`
	State     string         `yaml:"state,omitempty" json:"state,omitempty"`
	From      any            `yaml:"from,omitempty" json:"from,omitempty"`
	To        any            `yaml:"to,omitempty" json:"to,omitempty"`
	Value     any            `yaml:"value,omitempty" json:"value,omitempty"`
	Mappings  map[string]any `yaml:"mappings,omitempty" json:"mappings,omitempty"`
	Required  *bool          `yaml:"required,omitempty" json:"required,omitempty"`
	Terminal  *bool          `yaml:"terminal,omitempty" json:"terminal,omitempty"`
	Reason    string         `yaml:"reason,omitempty" json:"reason,omitempty"`
	// contains filtered or unexported fields
}

Operation is one item from Pitcrew's bounded migration vocabulary.

func (*Operation) UnmarshalYAML

func (o *Operation) UnmarshalYAML(node *yaml.Node) error

UnmarshalYAML records property presence so validation can reject properties that are valid for another operation but invalid for this one.

type Path

type Path struct {
	APIVersion string      `yaml:"apiVersion" json:"apiVersion"`
	Contract   string      `yaml:"contract" json:"contract"`
	From       int         `yaml:"from" json:"from"`
	To         int         `yaml:"to" json:"to"`
	Operations []Operation `yaml:"operations" json:"operations"`
}

Path describes one explicit forward migration between immutable versions of the same contract.

type ValidationError

type ValidationError struct {
	Code    string `json:"code"`
	Path    string `json:"path,omitempty"`
	Message string `json:"message"`
}

ValidationError describes one migration-path violation.

func ValidateAgainst

func ValidateAgainst(path Path, source, target contract.Contract) []ValidationError

ValidateAgainst verifies that every operation refers to the installed source and target definitions it claims to connect.

func (ValidationError) String

func (e ValidationError) String() string

Jump to

Keyboard shortcuts

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