bdb

package
v0.21.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 16, 2023 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrPathNotFound    = cerr.NewAsertoError("E20050", codes.NotFound, http.StatusNotFound, "path not found")
	ErrKeyNotFound     = cerr.NewAsertoError("E20051", codes.NotFound, http.StatusNotFound, "key not found")
	ErrKeyExists       = cerr.NewAsertoError("E20052", codes.AlreadyExists, http.StatusConflict, "key already exists")
	ErrMultipleResults = cerr.NewAsertoError("E20053", codes.FailedPrecondition, http.StatusExpectationFailed, "multiple results for singleton request")
)

Error codes returned by failures to parse an expression.

Functions

func BucketExists

func BucketExists(tx *bolt.Tx, path Path) (bool, error)

BucketExists, check if bucket path exists.

func CreateBucket

func CreateBucket(tx *bolt.Tx, path Path) (*bolt.Bucket, error)

CreateBucket, create bucket path if not exists.

func Delete

func Delete(ctx context.Context, tx *bolt.Tx, path Path, key string) error

func DeleteBucket

func DeleteBucket(tx *bolt.Tx, path Path) error

DeleteBucket, delete tail bucket of path provided.

func DeleteKey

func DeleteKey(tx *bolt.Tx, path Path, key string) error

DeleteKey, delete key and value in path specified bucket, when it exists. None existing keys will not raise an error.

func Get

func Get[T any, M Message[T]](ctx context.Context, tx *bolt.Tx, path Path, key string) (M, error)

func GetKey

func GetKey(tx *bolt.Tx, path Path, key string) ([]byte, error)

GetKey, get key and value from path specified bucket.

func KeyExists

func KeyExists(tx *bolt.Tx, path Path, key string) (bool, error)

KeyExists, check if the key exists in the path specified bucket.

func Marshal

func Marshal[T any, M Message[T]](t M) ([]byte, error)

func Scan

func Scan[T any, M Message[T]](ctx context.Context, tx *bolt.Tx, path Path, filter string) ([]M, error)

func Set

func Set[T any, M Message[T]](ctx context.Context, tx *bolt.Tx, path Path, key string, t M) (M, error)

func SetBucket

func SetBucket(tx *bolt.Tx, path Path) (*bolt.Bucket, error)

SetBucket, set bucket context to path.

func SetFieldProperty

func SetFieldProperty[T any](target *T, fieldName string, value interface{}) error

func SetKey

func SetKey(tx *bolt.Tx, path Path, key string, value []byte) error

SetKey, set key and value in the path specified bucket.

func Unmarshal

func Unmarshal[T any, M Message[T]](b []byte) (M, error)

func UpdateMetadata

func UpdateMetadata[T any, M Message[T]](ctx context.Context, tx *bolt.Tx, path []string, key string, msg *T) (M, error)

Types

type BoltDB

type BoltDB struct {
	// contains filtered or unexported fields
}

BoltDB based key-value store.

func New

func New(config *Config, logger *zerolog.Logger) (*BoltDB, error)

func (*BoltDB) Close

func (s *BoltDB) Close()

Close closes BoltDB key-value store instance.

func (*BoltDB) Config

func (s *BoltDB) Config() *Config

func (*BoltDB) DB

func (s *BoltDB) DB() *bolt.DB

func (*BoltDB) Open

func (s *BoltDB) Open() error

Open BoltDB key-value store instance.

type Config

type Config struct {
	DBPath         string
	RequestTimeout time.Duration
}

type Iterator added in v0.21.5

type Iterator[T any, M Message[T]] interface {
	Next() bool       // move cursor to next element.
	RawKey() []byte   // return raw key value ([]byte).
	RawValue() []byte // return ram value value ([]byte).
	Key() string      // return key value (string).
	Value() M         // return typed value (M).
	Delete() error    // delete element underneath cursor.
}

func NewScanIterator added in v0.21.5

func NewScanIterator[T any, M Message[T]](ctx context.Context, tx *bolt.Tx, path Path, opts ...ScanOption) (Iterator[T, M], error)

type Message

type Message[T any] interface {
	proto.Message
	*T
	GetCreatedAt() *timestamppb.Timestamp
}

type PageIterator added in v0.21.5

type PageIterator[T any, M Message[T]] struct {
	// contains filtered or unexported fields
}

func (*PageIterator[T, M]) Next added in v0.21.5

func (p *PageIterator[T, M]) Next() bool

func (*PageIterator[T, M]) NextToken added in v0.21.5

func (p *PageIterator[T, M]) NextToken() string

func (*PageIterator[T, M]) Value added in v0.21.5

func (p *PageIterator[T, M]) Value() []M

type PagedIterator added in v0.21.5

type PagedIterator[T any, M Message[T]] interface {
	Next() bool
	Value() []M
	NextToken() string
}

func NewPageIterator added in v0.21.5

func NewPageIterator[T any, M Message[T]](ctx context.Context, tx *bolt.Tx, path Path, opts ...ScanOption) (PagedIterator[T, M], error)

type Path added in v0.21.5

type Path []string
var (
	SystemPath        Path = []string{"_system"}
	ObjectTypesPath   Path = []string{"object_types"}
	PermissionsPath   Path = []string{"permissions"}
	RelationTypesPath Path = []string{"relation_types"}
	ObjectsPath       Path = []string{"objects"}
	RelationsSubPath  Path = []string{"relations_sub"}
	RelationsObjPath  Path = []string{"relations_obj"}
)

type ScanArgs added in v0.21.5

type ScanArgs struct {
	// contains filtered or unexported fields
}

type ScanIterator added in v0.21.5

type ScanIterator[T any, M Message[T]] struct {
	// contains filtered or unexported fields
}

func (*ScanIterator[T, M]) Delete added in v0.21.5

func (s *ScanIterator[T, M]) Delete() error

func (*ScanIterator[T, M]) Key added in v0.21.5

func (s *ScanIterator[T, M]) Key() string

func (*ScanIterator[T, M]) Next added in v0.21.5

func (s *ScanIterator[T, M]) Next() bool

func (*ScanIterator[T, M]) RawKey added in v0.21.5

func (s *ScanIterator[T, M]) RawKey() []byte

func (*ScanIterator[T, M]) RawValue added in v0.21.5

func (s *ScanIterator[T, M]) RawValue() []byte

func (*ScanIterator[T, M]) SetFilter added in v0.21.5

func (s *ScanIterator[T, M]) SetFilter(filters []func(M) bool)

func (*ScanIterator[T, M]) Value added in v0.21.5

func (s *ScanIterator[T, M]) Value() M

type ScanOption added in v0.21.5

type ScanOption func(*ScanArgs)

func WithKeyFilter added in v0.21.5

func WithKeyFilter(filter string) ScanOption

func WithPageSize added in v0.21.5

func WithPageSize(size int32) ScanOption

func WithPageToken added in v0.21.5

func WithPageToken(token string) ScanOption

Directories

Path Synopsis
mig

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL