Documentation
¶
Index ¶
- Constants
- func ClassifySQL(sql string) (classification string, destructive []SQLClassification, ...)
- func MarshalContractDeterministic(c *Contract) ([]byte, error)
- func MarshalImpactDeterministic(i *Impact) ([]byte, error)
- func MarshalValidationDeterministic(v *Validation) ([]byte, error)
- func WriteContract(path string, c *Contract) error
- func WriteImpact(path string, i *Impact) error
- func WriteValidation(path string, v *Validation) error
- type Binding
- type BindingImpact
- type BindingValidation
- type Bootstrap
- type BuildOptions
- type Capabilities
- type Checks
- type ClassifiedStatement
- type Contract
- type Credentials
- type DatabaseMode
- type DiscoveredSignal
- type Engine
- type FileRef
- type Impact
- type ImpactOptions
- type MigrationFile
- type MigrationPolicy
- type Migrations
- type Partitioning
- type ProviderExpectations
- type RegionEnablement
- type RollbackPosture
- type SQLClassification
- type SchemaSnapshot
- type SourceValidationResult
- type Topology
- type UnsupportedValidationPhase
- type Validation
- type ValidationOptions
- type ValidationResult
- type ValidationSummary
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 MarshalValidationDeterministic ¶
func MarshalValidationDeterministic(v *Validation) ([]byte, error)
func WriteContract ¶
func WriteImpact ¶
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 BuildOptions ¶
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 ClassifiedStatement ¶
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 ¶
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 DiscoveredSignal ¶
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 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 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 ProviderExpectations ¶
type RegionEnablement ¶
type RollbackPosture ¶
type SQLClassification ¶
type SchemaSnapshot ¶
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 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 ValidationResult ¶
type ValidationResult struct {
Valid bool `json:"valid"`
Diagnostics []artifact.Diagnostic `json:"diagnostics"`
}
func ValidateContract ¶
func ValidateContract(c *Contract, opts ValidationOptions) ValidationResult
type ValidationSummary ¶
Click to show internal directories.
Click to hide internal directories.