dbcontract

package
v0.2.3 Latest Latest
Warning

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

Go to latest
Published: May 24, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ContractSchemaVersion   = "vango.db.contract.v1.0"
	ValidationSchemaVersion = "vango.db.validation.v1.0"
	ImpactSchemaVersion     = "vango.db.impact.v1.0"

	ContractArtifactKind   = "vango_db_contract"
	ValidationArtifactKind = "vango_db_validation"
	ImpactArtifactKind     = "vango_db_impact"

	DefaultContractOutputPath   = ".vango/db/vango_db_contract.json"
	DefaultValidationOutputPath = ".vango/db/vango_db_validation.json"
	DefaultImpactOutputPath     = ".vango/db/vango_db_impact.json"
)

Variables

This section is empty.

Functions

func ClassifySQL

func ClassifySQL(sql string) (classification string, destructive []SQLClassification, dataMigrations []SQLClassification, manual []string)

func MarshalContractDeterministic

func MarshalContractDeterministic(c *Contract) ([]byte, error)

func MarshalImpactDeterministic

func MarshalImpactDeterministic(i *Impact) ([]byte, error)

func MarshalValidationDeterministic

func MarshalValidationDeterministic(v *Validation) ([]byte, error)

func WriteContract

func WriteContract(path string, c *Contract) error

func WriteImpact

func WriteImpact(path string, i *Impact) error

func WriteValidation

func WriteValidation(path string, v *Validation) error

Types

type Binding

type Binding struct {
	ID                   string               `json:"id"`
	Name                 string               `json:"name"`
	Required             bool                 `json:"required"`
	Purpose              string               `json:"purpose"`
	Origin               artifact.Origin      `json:"origin"`
	ProofLevel           artifact.ProofLevel  `json:"proof_level"`
	SourceRef            artifact.SourceRef   `json:"source_ref,omitempty"`
	Engine               Engine               `json:"engine"`
	ProviderExpectations ProviderExpectations `json:"provider_expectations"`
	Credentials          Credentials          `json:"credentials"`
	Migrations           Migrations           `json:"migrations"`
	Bootstrap            Bootstrap            `json:"bootstrap"`
	Checks               Checks               `json:"checks"`
	SchemaSnapshot       SchemaSnapshot       `json:"schema_snapshot"`
	MigrationPolicy      MigrationPolicy      `json:"migration_policy"`
	Topology             Topology             `json:"topology"`
	RegionEnablement     RegionEnablement     `json:"region_enablement"`
}

type BindingImpact

type BindingImpact struct {
	BindingID                  string                `json:"binding_id"`
	Classification             string                `json:"classification"`
	PreviousDigest             string                `json:"previous_digest,omitempty"`
	CandidateDigest            string                `json:"candidate_digest,omitempty"`
	AddedMigrations            []string              `json:"added_migrations"`
	RemovedMigrations          []string              `json:"removed_migrations"`
	ModifiedExistingMigrations []string              `json:"modified_existing_migrations"`
	DestructiveStatements      []ClassifiedStatement `json:"destructive_statements"`
	DataMigrationStatements    []ClassifiedStatement `json:"data_migration_statements"`
	ManualReasons              []string              `json:"manual_reasons"`
}

type BindingValidation

type BindingValidation struct {
	BindingID          string                     `json:"binding_id"`
	Status             string                     `json:"status"`
	SourceValidation   SourceValidationResult     `json:"source_validation"`
	FreshValidation    UnsupportedValidationPhase `json:"fresh_validation"`
	DriftValidation    UnsupportedValidationPhase `json:"drift_validation"`
	TopologyValidation UnsupportedValidationPhase `json:"topology_validation"`
	Diagnostics        []artifact.Diagnostic      `json:"diagnostics"`
}

type Bootstrap

type Bootstrap struct {
	Paths                []FileRef `json:"paths"`
	ContainsCustomerData bool      `json:"contains_customer_data"`
	CombinedDigest       string    `json:"combined_digest"`
}

type BuildOptions

type BuildOptions struct {
	ProjectRoot          string
	Name                 string
	Module               string
	AppVersion           string
	ToolVersion          string
	Commit               string
	OutputPath           string
	ValidationOutputPath string
	ImpactOutputPath     string
	Database             config.DatabaseConfig
	NeonEnabled          bool
}

type Capabilities

type Capabilities struct {
	DeclarationValidation        string `json:"declaration_validation"`
	MigrationInputValidation     string `json:"migration_input_validation"`
	StaticSQLClassification      string `json:"static_sql_classification"`
	FreshDatabaseValidation      string `json:"fresh_database_validation"`
	DriftValidation              string `json:"drift_validation"`
	TopologyValidation           string `json:"topology_validation"`
	ProviderDiff                 string `json:"provider_diff"`
	ProductionMigrationExecution string `json:"production_migration_execution"`
}

type Checks

type Checks struct {
	PostFreshSQL []string `json:"post_fresh_sql"`
}

type ClassifiedStatement

type ClassifiedStatement struct {
	MigrationID string `json:"migration_id"`
	Path        string `json:"path"`
	Statement   string `json:"statement"`
	Reason      string `json:"reason"`
}

type Contract

type Contract struct {
	SchemaVersion      string                          `json:"schema_version"`
	ArtifactID         string                          `json:"artifact_id"`
	ArtifactKind       string                          `json:"artifact_kind"`
	Producer           artifact.Producer               `json:"producer"`
	App                artifact.App                    `json:"app"`
	Analysis           artifact.Analysis               `json:"analysis"`
	Capabilities       Capabilities                    `json:"capabilities"`
	DatabaseMode       DatabaseMode                    `json:"database_mode"`
	Bindings           []Binding                       `json:"bindings"`
	ProviderProfiles   []artifact.ProfileFact          `json:"provider_profiles"`
	DiscoveredSignals  []DiscoveredSignal              `json:"discovered_signals"`
	OperationReadiness []artifact.OperationReadiness   `json:"operation_readiness"`
	Inputs             []artifact.ArtifactRef          `json:"inputs"`
	Outputs            []artifact.ArtifactRef          `json:"outputs"`
	References         map[string]artifact.ArtifactRef `json:"references"`
	Diagnostics        []artifact.Diagnostic           `json:"diagnostics"`
}

func BuildContract

func BuildContract(opts BuildOptions) (*Contract, error)

func LoadContract

func LoadContract(path string) (*Contract, error)

type Credentials

type Credentials struct {
	RuntimeEnv              string `json:"runtime_env,omitempty"`
	MigrationEnv            string `json:"migration_env,omitempty"`
	AdminEnv                string `json:"admin_env,omitempty"`
	ValidationEnv           string `json:"validation_env,omitempty"`
	ReadOnlyEnv             string `json:"read_only_env,omitempty"`
	MigrationRequiresDirect bool   `json:"migration_requires_direct"`
	SecretValuesInContract  bool   `json:"secret_values_in_contract"`
}

type DatabaseMode

type DatabaseMode struct {
	Mode       string              `json:"mode"`
	Explicit   bool                `json:"explicit"`
	Origin     artifact.Origin     `json:"origin"`
	ProofLevel artifact.ProofLevel `json:"proof_level"`
	SourceRef  artifact.SourceRef  `json:"source_ref,omitempty"`
}

type DiscoveredSignal

type DiscoveredSignal struct {
	ID         string              `json:"id"`
	Kind       string              `json:"kind"`
	Path       string              `json:"path,omitempty"`
	Reason     string              `json:"reason"`
	Origin     artifact.Origin     `json:"origin"`
	ProofLevel artifact.ProofLevel `json:"proof_level"`
	SourceRef  artifact.SourceRef  `json:"source_ref,omitempty"`
}

type Engine

type Engine struct {
	Family         string   `json:"family"`
	MinimumVersion string   `json:"minimum_version,omitempty"`
	Extensions     []string `json:"extensions"`
	Features       []string `json:"features"`
}

type FileRef

type FileRef struct {
	Path   string `json:"path"`
	Digest string `json:"digest,omitempty"`
}

type Impact

type Impact struct {
	SchemaVersion      string                          `json:"schema_version"`
	ArtifactID         string                          `json:"artifact_id"`
	ArtifactKind       string                          `json:"artifact_kind"`
	Producer           artifact.Producer               `json:"producer"`
	App                artifact.App                    `json:"app"`
	Analysis           artifact.Analysis               `json:"analysis"`
	Classification     string                          `json:"classification"`
	RequiresDBReview   bool                            `json:"requires_db_review"`
	ReviewClass        string                          `json:"review_class"`
	Bindings           []BindingImpact                 `json:"bindings"`
	Rollback           RollbackPosture                 `json:"rollback"`
	OperationReadiness []artifact.OperationReadiness   `json:"operation_readiness"`
	Inputs             []artifact.ArtifactRef          `json:"inputs"`
	Outputs            []artifact.ArtifactRef          `json:"outputs"`
	References         map[string]artifact.ArtifactRef `json:"references"`
	Diagnostics        []artifact.Diagnostic           `json:"diagnostics"`
}

func BuildImpact

func BuildImpact(opts ImpactOptions) (*Impact, error)

type ImpactOptions

type ImpactOptions struct {
	ProjectRoot string
	Name        string
	Module      string
	AppVersion  string
	ToolVersion string
	Commit      string
	OutputPath  string
	Previous    *Contract
	Candidate   *Contract
}

type MigrationFile

type MigrationFile struct {
	ID                 string              `json:"id"`
	Path               string              `json:"path"`
	Version            string              `json:"version,omitempty"`
	Name               string              `json:"name,omitempty"`
	Digest             string              `json:"digest"`
	Kind               string              `json:"kind"`
	HasUp              bool                `json:"has_up"`
	HasDown            bool                `json:"has_down"`
	ClassificationHint string              `json:"classification_hint"`
	ProofLevel         artifact.ProofLevel `json:"proof_level"`
	SourceRef          artifact.SourceRef  `json:"source_ref,omitempty"`
}

type MigrationPolicy

type MigrationPolicy struct {
	ProductionApply             string `json:"production_apply"`
	StartupApplyAllowed         string `json:"startup_apply_allowed"`
	DestructiveRequiresReview   bool   `json:"destructive_requires_review"`
	DataMigrationRequiresReview bool   `json:"data_migration_requires_review"`
}

type Migrations

type Migrations struct {
	Tool            string          `json:"tool"`
	Dialect         string          `json:"dialect"`
	Directories     []string        `json:"directories"`
	Files           []MigrationFile `json:"files"`
	CombinedDigest  string          `json:"combined_digest"`
	Ordering        string          `json:"ordering"`
	Table           string          `json:"table,omitempty"`
	EmbedPattern    string          `json:"embed_pattern,omitempty"`
	AllowOutOfOrder bool            `json:"allow_out_of_order"`
}

type Partitioning

type Partitioning struct {
	Strategy          string `json:"strategy,omitempty"`
	RequestRoutingKey string `json:"request_routing_key,omitempty"`
	DeclaredBy        string `json:"declared_by,omitempty"`
}

type ProviderExpectations

type ProviderExpectations struct {
	Provider                  string `json:"provider"`
	RuntimeMayBePooled        bool   `json:"runtime_may_be_pooled"`
	MigrationMustBeDirect     bool   `json:"migration_must_be_direct"`
	TLSRequired               bool   `json:"tls_required"`
	ChannelBindingRecommended bool   `json:"channel_binding_recommended"`
}

type RegionEnablement

type RegionEnablement struct {
	CanPrepareNewCellFromRepo bool     `json:"can_prepare_new_cell_from_repo"`
	RequiresBootstrapData     bool     `json:"requires_bootstrap_data"`
	RequiresDataCopy          bool     `json:"requires_data_copy"`
	RequiresProviderCaps      []string `json:"requires_provider_capabilities"`
}

type RollbackPosture

type RollbackPosture struct {
	DBPosture                              string `json:"db_posture"`
	AppRollbackCompatibleWithCurrentSchema bool   `json:"app_rollback_compatible_with_current_schema"`
	RequiresDatabaseRollback               bool   `json:"requires_database_rollback"`
	Reason                                 string `json:"reason"`
}

type SQLClassification

type SQLClassification struct {
	Classification string
	Statement      string
	Reason         string
}

type SchemaSnapshot

type SchemaSnapshot struct {
	Path     string `json:"path,omitempty"`
	Digest   string `json:"digest,omitempty"`
	Required bool   `json:"required"`
}

type SourceValidationResult

type SourceValidationResult struct {
	PathsValid       bool   `json:"paths_valid"`
	OrderingValid    bool   `json:"ordering_valid"`
	FilesParseable   bool   `json:"files_parseable"`
	CombinedDigest   string `json:"combined_digest,omitempty"`
	SecretsAbsent    bool   `json:"secrets_absent"`
	DeclarationValid bool   `json:"declaration_valid"`
}

type Topology

type Topology struct {
	SupportedModes        []string     `json:"supported_modes"`
	DefaultMode           string       `json:"default_mode"`
	CellLocalReady        bool         `json:"cell_local_ready"`
	TenantHomeRegionReady bool         `json:"tenant_home_region_ready"`
	GlobalDatabaseReady   bool         `json:"global_database_ready"`
	Partitioning          Partitioning `json:"partitioning,omitempty"`
}

type UnsupportedValidationPhase

type UnsupportedValidationPhase struct {
	Supported         bool                `json:"supported"`
	Executed          bool                `json:"executed"`
	Status            string              `json:"status"`
	ProofLevel        artifact.ProofLevel `json:"proof_level"`
	UnsupportedReason string              `json:"unsupported_reason,omitempty"`
}

type Validation

type Validation struct {
	SchemaVersion      string                          `json:"schema_version"`
	ArtifactID         string                          `json:"artifact_id"`
	ArtifactKind       string                          `json:"artifact_kind"`
	Producer           artifact.Producer               `json:"producer"`
	App                artifact.App                    `json:"app"`
	Analysis           artifact.Analysis               `json:"analysis"`
	ContractRef        artifact.ArtifactRef            `json:"contract_ref"`
	Mode               string                          `json:"mode"`
	Bindings           []BindingValidation             `json:"bindings"`
	Summary            ValidationSummary               `json:"summary"`
	OperationReadiness []artifact.OperationReadiness   `json:"operation_readiness"`
	Inputs             []artifact.ArtifactRef          `json:"inputs"`
	Outputs            []artifact.ArtifactRef          `json:"outputs"`
	References         map[string]artifact.ArtifactRef `json:"references"`
	Diagnostics        []artifact.Diagnostic           `json:"diagnostics"`
}

func BuildValidation

func BuildValidation(opts BuildOptions, contract *Contract) (*Validation, error)

type ValidationOptions

type ValidationOptions struct {
	ProjectRoot      string
	RequireArtifacts bool
}

type ValidationResult

type ValidationResult struct {
	Valid       bool                  `json:"valid"`
	Diagnostics []artifact.Diagnostic `json:"diagnostics"`
}

func ValidateContract

func ValidateContract(c *Contract, opts ValidationOptions) ValidationResult

type ValidationSummary

type ValidationSummary struct {
	Status              string `json:"status"`
	BindingCount        int    `json:"binding_count"`
	PassedBindings      int    `json:"passed_bindings"`
	WarningBindings     int    `json:"warning_bindings"`
	FailedBindings      int    `json:"failed_bindings"`
	ManualRequiredCount int    `json:"manual_required_count"`
}

Jump to

Keyboard shortcuts

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