Documentation
¶
Index ¶
Constants ¶
View Source
const ( // MaxUpgradeAttempts is the maximum number of times a data record will attempt to be upgraded successively. // Used to prevent version loops. i.e. upgrading to v3 but goes v1 -> v2 -> v1 infinitely MaxUpgradeAttempts = 1000 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Bucket ¶
type Bucket interface {
// Iter iterates over all values, assigning each value to 'v', then calling fn with it's ID
Iter(v interface{}, fn func(id string) (keepGoing bool)) error
// Get reads the record with key 'id' into 'v'
Get(id string, v interface{}) (found bool, err error)
// Put writes the record 'v' with key 'id'. If 'v' is nil, the record is deleted
Put(id string, v interface{}) error
}
Bucket reads and writes records on a DB
type BucketUpgrader ¶ added in v0.8.0
type BucketUpgrader interface {
// UpgradeAll attempts to upgrade all of data once, prior to individual item upgrades
UpgradeAll(dataVersion string, data map[string]interface{}) (newVersion string, newData map[string]interface{}, err error)
}
BucketUpgrader is only used for schema-level upgrades to a bucket, e.g. updating the ID format. Only runs once, then bucket items are processed. For a simpler upgrade implementation, stick to just Upgrader.
type DB ¶
type DB interface {
io.Closer
// Bucket returns a bucket with 'name.json' on disk, and auto-upgraded to 'version'
Bucket(name, version string, upgrader Upgrader) (Bucket, error)
}
DB creates buckets that can read or write JSON data
type DBOpt ¶
type DBOpt interface {
// contains filtered or unexported methods
}
DBOpt configures the DB built by Open
func VersionControl ¶
func VersionControl(setRepo *vcs.Repository) DBOpt
type LegacyUpgrader ¶
type LegacyUpgrader interface {
Upgrader
// ParseLegacy parses the original JSON data as a whole.
// Deprecated: Use Parse with the version format instead.
ParseLegacy(legacyData json.RawMessage) (version string, data map[string]json.RawMessage, err error)
}
LegacyUpgrader upgrades data from a legacy, unversioned format
type MockConfig ¶
MockConfig contains stubs for a full MockDB
type MockDB ¶
MockDB is a DB with additional mocking utilities
func NewMockDB ¶
func NewMockDB(conf MockConfig) MockDB
NewMockDB creates a new DB without a backing file store, to be used in tests
type Upgrader ¶
type Upgrader interface {
// Parse parses the original JSON record for the given version
Parse(dataVersion, id string, data json.RawMessage) (interface{}, error)
// Upgrade upgrades 'data' to 'dataVersion'. May be run multiple times to incrementally upgrade the data.
Upgrade(dataVersion, id string, data interface{}) (newVersion string, newData interface{}, err error)
}
Upgrader upgrades data to the given version
Click to show internal directories.
Click to hide internal directories.