Documentation
¶
Overview ¶
Package sqlite is the SQLite adapter for both store.ManifestStore and store.OperationalStore, backed by modernc.org/sqlite (a pure-Go driver, no cgo). Schema migrations are embedded and applied on Open.
Index ¶
- func Open(ctx context.Context, path string) (*sql.DB, error)
- func OpenVaultIndexIn(ctx context.Context, dir string) (store.VaultIndex, error)
- type ApplyJournal
- func (j *ApplyJournal) ListUnapplied(ctx context.Context) ([]store.ApplyUnit, error)
- func (j *ApplyJournal) MarkApplied(ctx context.Context, unitID string) error
- func (j *ApplyJournal) PruneOld(ctx context.Context, keepCount int) error
- func (j *ApplyJournal) PutUnit(ctx context.Context, unit store.ApplyUnit) error
- func (j *ApplyJournal) WithinTransaction(ctx context.Context, fn func(ctx context.Context, tx store.ApplyJournal) error) error
- type ManifestStore
- func (m *ManifestStore) Counts(ctx context.Context) (map[string]int, error)
- func (m *ManifestStore) Exclude(ctx context.Context, kind, id, name, reason, operator string) error
- func (m *ManifestStore) GetCurrent(ctx context.Context, kind, id string) (store.Version, bool, error)
- func (m *ManifestStore) GetVersion(ctx context.Context, kind, id string, number int) (store.Version, bool, error)
- func (m *ManifestStore) GetWorking(ctx context.Context, kind, id string) ([]byte, bool, error)
- func (m *ManifestStore) IndexReferences(ctx context.Context, fromKind, fromID string, refs []store.Ref) error
- func (m *ManifestStore) ListAllVersions(ctx context.Context, limit int, cursor string) ([]store.Version, string, error)
- func (m *ManifestStore) ListExcluded(ctx context.Context) ([]store.Exclusion, error)
- func (m *ManifestStore) ListIDs(ctx context.Context, kind string) ([]string, error)
- func (m *ManifestStore) ListReferencedBy(ctx context.Context, fromKind, fromID string) ([]store.Ref, error)
- func (m *ManifestStore) ListReferencing(ctx context.Context, toKind, toID string) ([]store.Summary, error)
- func (m *ManifestStore) ListSummaries(ctx context.Context, kind, query string, refs []store.RefFilter) ([]store.Summary, error)
- func (m *ManifestStore) ListVersions(ctx context.Context, kind, id string) ([]store.Version, error)
- func (m *ManifestStore) PutVersion(ctx context.Context, v store.Version) error
- func (m *ManifestStore) PutWorking(ctx context.Context, kind, id string, yamlBytes []byte) error
- func (m *ManifestStore) Recover(ctx context.Context, kind, id, reason, operator string) error
- func (m *ManifestStore) WithinTransaction(ctx context.Context, ...) error
- type OperationalStore
- type VaultIndex
- func (v *VaultIndex) Close() error
- func (v *VaultIndex) DeleteFileHash(ctx context.Context, kind, id string) error
- func (v *VaultIndex) GetFileHash(ctx context.Context, kind, id string) (string, bool, error)
- func (v *VaultIndex) GetMeta(ctx context.Context, key string) (string, bool, error)
- func (v *VaultIndex) Journal() store.ApplyJournal
- func (v *VaultIndex) Operational() store.OperationalStore
- func (v *VaultIndex) PutFileHash(ctx context.Context, kind, id, sha256, mtime string) error
- func (v *VaultIndex) PutMeta(ctx context.Context, key, value string) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Open ¶
Open opens (creating if needed) a SQLite database at path, applies any migration not yet recorded, and returns the shared *sql.DB. Callers build ManifestStore and OperationalStore from it with NewManifestStore and NewOperationalStore.
func OpenVaultIndexIn ¶ added in v1.0.1
OpenVaultIndexIn opens the index a vault keeps in dir, as dir/index.sqlite. Its type is vault.Options.OpenIndex, so the composition root hands it to a vault without either adapter importing the other.
Types ¶
type ApplyJournal ¶
type ApplyJournal struct {
// contains filtered or unexported fields
}
ApplyJournal is the SQLite adapter for store.ApplyJournal. It wraps both *sql.DB and *sql.Tx through the executor interface.
func NewApplyJournal ¶
func NewApplyJournal(db *sql.DB) *ApplyJournal
NewApplyJournal creates a new ApplyJournal over the given database.
func (*ApplyJournal) ListUnapplied ¶
ListUnapplied returns every unit with applied=false, oldest first.
func (*ApplyJournal) MarkApplied ¶
func (j *ApplyJournal) MarkApplied(ctx context.Context, unitID string) error
MarkApplied marks a unit as applied.
func (*ApplyJournal) PruneOld ¶
func (j *ApplyJournal) PruneOld(ctx context.Context, keepCount int) error
PruneOld removes applied units older than keepCount (keeps the most recent). A keepCount of 0 or less means unlimited (no pruning).
func (*ApplyJournal) WithinTransaction ¶
func (j *ApplyJournal) WithinTransaction(ctx context.Context, fn func(ctx context.Context, tx store.ApplyJournal) error) error
WithinTransaction runs fn in a transaction.
type ManifestStore ¶
type ManifestStore struct {
// contains filtered or unexported fields
}
ManifestStore is the SQLite adapter for store.ManifestStore. The zero value is not usable; construct with NewManifestStore.
func NewManifestStore ¶
func NewManifestStore(db *sql.DB) *ManifestStore
func (*ManifestStore) Exclude ¶
func (m *ManifestStore) Exclude(ctx context.Context, kind, id, name, reason, operator string) error
Exclude records an exclusion for a manifest.
func (*ManifestStore) GetCurrent ¶
func (*ManifestStore) GetVersion ¶
func (*ManifestStore) GetWorking ¶
GetWorking returns a manifest's working copy (autosave without versioning). Returns found=false when none exists.
func (*ManifestStore) IndexReferences ¶
func (m *ManifestStore) IndexReferences(ctx context.Context, fromKind, fromID string, refs []store.Ref) error
IndexReferences replaces every recorded outgoing reference for fromKind/fromID with refs.
func (*ManifestStore) ListAllVersions ¶
func (*ManifestStore) ListExcluded ¶
ListExcluded returns every excluded manifest, newest first.
func (*ManifestStore) ListReferencedBy ¶
func (*ManifestStore) ListReferencing ¶
func (*ManifestStore) ListSummaries ¶
func (*ManifestStore) ListVersions ¶
func (*ManifestStore) PutVersion ¶
func (*ManifestStore) PutWorking ¶
PutWorking stores a manifest's working copy (autosave without versioning).
func (*ManifestStore) Recover ¶
func (m *ManifestStore) Recover(ctx context.Context, kind, id, reason, operator string) error
Recover deletes an exclusion record.
func (*ManifestStore) WithinTransaction ¶
func (m *ManifestStore) WithinTransaction(ctx context.Context, fn func(ctx context.Context, tx store.ManifestStore) error) error
type OperationalStore ¶
type OperationalStore struct {
// contains filtered or unexported fields
}
OperationalStore is the SQLite adapter for store.OperationalStore.
func NewOperationalStore ¶
func NewOperationalStore(db *sql.DB) *OperationalStore
func (*OperationalStore) ListProjectStateHistory ¶
func (o *OperationalStore) ListProjectStateHistory(ctx context.Context, projectID string) ([]store.ProjectStateEntry, error)
func (*OperationalStore) PutProjectStateTransition ¶
func (o *OperationalStore) PutProjectStateTransition(ctx context.Context, e store.ProjectStateEntry) error
type VaultIndex ¶
type VaultIndex struct {
*ManifestStore
// contains filtered or unexported fields
}
VaultIndex is the SQLite adapter for store.VaultIndex: everything the vault keeps beside its files, in one database. It wraps a ManifestStore, an ApplyJournal and an OperationalStore over the same *sql.DB, and adds the file-hash and meta tables (vault_files, vault_meta) that used to be raw SQL inside the vault package itself.
func NewVaultIndex ¶
func NewVaultIndex(db *sql.DB) *VaultIndex
NewVaultIndex builds a VaultIndex over an already-open, already-migrated database.
func OpenVaultIndex ¶
func OpenVaultIndex(ctx context.Context, path string) (*VaultIndex, error)
OpenVaultIndex opens (creating if needed) a SQLite database at path, applies migrations, and returns a VaultIndex over it.
func (*VaultIndex) DeleteFileHash ¶
func (v *VaultIndex) DeleteFileHash(ctx context.Context, kind, id string) error
DeleteFileHash removes a file's recorded hash, if any.
func (*VaultIndex) GetFileHash ¶
GetFileHash returns the SHA-256 last recorded for kind/id, if any.
func (*VaultIndex) GetMeta ¶
GetMeta returns one recorded fact about the index itself (for example the vault.yaml hash recorded at the last open, under key "vault.yaml.hash"). Both that key and the rebuild-time key the vault used to keep in a separate index_meta table live in vault_meta now: nothing but this method ever reads or writes either.
func (*VaultIndex) Journal ¶
func (v *VaultIndex) Journal() store.ApplyJournal
Journal returns the apply journal over the same database.
func (*VaultIndex) Operational ¶
func (v *VaultIndex) Operational() store.OperationalStore
Operational returns the project-state store over the same database.
func (*VaultIndex) PutFileHash ¶
func (v *VaultIndex) PutFileHash(ctx context.Context, kind, id, sha256, mtime string) error
PutFileHash upserts a file's hash and mtime.