Rename root, api and sdk module paths (imports, go.mod, go_package, ldflags, build scripts, buf configs) and regenerate protobuf/gateway code with the project's pinned toolchain. Wire identifiers unchanged. api gets a local replace for sdk; root/api/sdk require v0.1.0. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
70 lines
1.9 KiB
Go
70 lines
1.9 KiB
Go
// Copyright IBM Corp. 2020, 2026
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package schema
|
|
|
|
import "repo.anhonesthost.net/CyberCoveLLC/threshold/internal/db/schema/internal/provider"
|
|
|
|
const nilVersion = -1
|
|
|
|
// State contains information regarding the current state of a boundary database's schema.
|
|
type State struct {
|
|
// Initialized indicates if the current database has been previously initialized.
|
|
Initialized bool
|
|
Editions []EditionState
|
|
}
|
|
|
|
// MigrationsApplied checks to see that all Editions are in the Equal SchemaState.
|
|
func (s State) MigrationsApplied() bool {
|
|
for _, e := range s.Editions {
|
|
if e.DatabaseSchemaState != Equal {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
func (s State) databaseState() provider.DatabaseState {
|
|
dbState := make(provider.DatabaseState)
|
|
for _, e := range s.Editions {
|
|
dbState[e.Name] = e.DatabaseSchemaVersion
|
|
}
|
|
return dbState
|
|
}
|
|
|
|
// DatabaseState defines the state of the Database schema as compared to the
|
|
// latest version for the binary.
|
|
type DatabaseState int
|
|
|
|
// Valid states.
|
|
const (
|
|
Behind DatabaseState = iota // Database schema version is older then latest for the binary, so it needs migrations applied.
|
|
Ahead // Database schema version is newer then latest for the binary, so binary needs to be updated.
|
|
Equal // Database schema version matches latest version for the binary.
|
|
)
|
|
|
|
// EditionState is the current state of a schema Edition.
|
|
type EditionState struct {
|
|
// Name is the identifier of the Edition.
|
|
Name string
|
|
|
|
// DatabaseSchemaVersion is the schema version that is currently running in the database.
|
|
DatabaseSchemaVersion int
|
|
// BinarySchemaVersion is the schema version which this boundary binary supports.
|
|
BinarySchemaVersion int
|
|
|
|
DatabaseSchemaState DatabaseState
|
|
}
|
|
|
|
func compareVersions(d int, b int) DatabaseState {
|
|
if d == b {
|
|
return Equal
|
|
}
|
|
|
|
if d < b {
|
|
return Behind
|
|
}
|
|
|
|
return Ahead
|
|
}
|