mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-06-15 07:00:52 +00:00
New upstream version 1.5.0+ds1
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
// Package database provides KV database for meta-information
|
||||
package database
|
||||
|
||||
import "errors"
|
||||
|
||||
// Errors for Storage
|
||||
var (
|
||||
ErrNotFound = errors.New("key not found")
|
||||
)
|
||||
|
||||
// StorageProcessor is a function to process one single storage entry
|
||||
type StorageProcessor func(key []byte, value []byte) error
|
||||
|
||||
// Reader provides KV read calls
|
||||
type Reader interface {
|
||||
Get(key []byte) ([]byte, error)
|
||||
}
|
||||
|
||||
// PrefixReader provides prefixed operations
|
||||
type PrefixReader interface {
|
||||
HasPrefix(prefix []byte) bool
|
||||
ProcessByPrefix(prefix []byte, proc StorageProcessor) error
|
||||
KeysByPrefix(prefix []byte) [][]byte
|
||||
FetchByPrefix(prefix []byte) [][]byte
|
||||
}
|
||||
|
||||
// Writer provides KV update/delete calls
|
||||
type Writer interface {
|
||||
Put(key []byte, value []byte) error
|
||||
Delete(key []byte) error
|
||||
}
|
||||
|
||||
// ReaderWriter combines Reader and Writer
|
||||
type ReaderWriter interface {
|
||||
Reader
|
||||
Writer
|
||||
}
|
||||
|
||||
// Storage is an interface to KV storage
|
||||
type Storage interface {
|
||||
Reader
|
||||
Writer
|
||||
|
||||
PrefixReader
|
||||
|
||||
CreateBatch() Batch
|
||||
OpenTransaction() (Transaction, error)
|
||||
|
||||
CreateTemporary() (Storage, error)
|
||||
|
||||
Open() error
|
||||
Close() error
|
||||
CompactDB() error
|
||||
Drop() error
|
||||
}
|
||||
|
||||
// Batch provides a way to pack many writes.
|
||||
type Batch interface {
|
||||
Writer
|
||||
|
||||
// Write closes batch and send accumulated writes to the database
|
||||
Write() error
|
||||
}
|
||||
|
||||
// Transaction provides isolated atomic way to perform updates.
|
||||
//
|
||||
// Transactions might be expensive.
|
||||
// Transaction should always finish with either Discard() or Commit()
|
||||
type Transaction interface {
|
||||
Reader
|
||||
Writer
|
||||
|
||||
Commit() error
|
||||
Discard()
|
||||
}
|
||||
Reference in New Issue
Block a user