repository

package
v1.0.0-beta.5 Latest Latest
Warning

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

Go to latest
Published: Apr 22, 2026 License: MIT Imports: 17 Imported by: 0

Documentation

Overview

Package repository provides interfaces for implementing storage solutions for types

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNotFound  = errors.New("item not found")
	ErrIdxExists = errors.New("index already exists")
)
View Source
var BackendCodec = ProtoCodec[*backendv1.Backend]{
	New: func() *backendv1.Backend { return &backendv1.Backend{} },
}
View Source
var CertificateAuthorityCodec = ProtoCodec[*cav1.CertificateAuthority]{
	New: func() *cav1.CertificateAuthority { return &cav1.CertificateAuthority{} },
}
View Source
var CertificateCodec = ProtoCodec[*certv1.Certificate]{
	New: func() *certv1.Certificate { return &certv1.Certificate{} },
}
View Source
var CredentialCodec = ProtoCodec[*credentialv1.Credential]{
	New: func() *credentialv1.Credential { return &credentialv1.Credential{} },
}
View Source
var PolicyCodec = ProtoCodec[*policyv1.Policy]{
	New: func() *policyv1.Policy { return &policyv1.Policy{} },
}
View Source
var RouteCodec = ProtoCodec[*routev1.Route]{
	New: func() *routev1.Route { return &routev1.Route{} },
}

Functions

This section is empty.

Types

type Codec

type Codec[T proto.Message] interface {
	Decode([]byte) (T, error)
}

type DB

type DB interface {
	View(ctx context.Context, fn func(txn Txn) error) error
	Update(ctx context.Context, fn func(txn Txn) error) error
}

type ProtoCodec

type ProtoCodec[T proto.Message] struct {
	New func() T
}

func (ProtoCodec[T]) Decode

func (c ProtoCodec[T]) Decode(b []byte) (T, error)

type Repo

type Repo[T Resource] struct {
	Codec Codec[T]
	// contains filtered or unexported fields
}

func NewBackendRepo

func NewBackendRepo[T *backendv1.Backend](db DB) *Repo[*backendv1.Backend]

func NewCertificateAuthorityRepo

func NewCertificateAuthorityRepo[T *cav1.CertificateAuthority](db DB) *Repo[*cav1.CertificateAuthority]

func NewCertificateRepo

func NewCertificateRepo[T *certv1.Certificate](db DB) *Repo[*certv1.Certificate]

func NewCredentialRepo

func NewCredentialRepo[T *credentialv1.Credential](db DB) *Repo[*credentialv1.Credential]

func NewPolicyRepo

func NewPolicyRepo[T *policyv1.Policy](db DB) *Repo[*policyv1.Policy]

func NewRepo

func NewRepo[T Resource](db DB, codec Codec[T], prefix, iprefix, idxprefix []byte) *Repo[T]

func NewRepo[T proto.Message](db *badger.DB, codec Codec[T], prefix, iprefix []byte) *Repo[T] {

func NewRouteRepo

func NewRouteRepo[T *routev1.Route](db DB) *Repo[*routev1.Route]

func (*Repo[T]) Create

func (r *Repo[T]) Create(ctx context.Context, resource T) (T, error)

func (Repo[T]) Delete

func (r Repo[T]) Delete(ctx context.Context, id keys.ID) error

func (Repo[T]) Get

func (r Repo[T]) Get(ctx context.Context, id keys.ID) (T, error)

func (Repo[T]) List

func (r Repo[T]) List(ctx context.Context, limit int32) ([]T, error)

func (Repo[T]) Update

func (r Repo[T]) Update(ctx context.Context, id keys.ID, resource T) (T, error)

type Resource

type Resource interface {
	proto.Message
	GetMeta() *metav1.Meta
}

type Txn

type Txn interface {
	Get(key []byte) ([]byte, error)       // returns a COPY of value
	List([]byte, int32) ([][]byte, error) // returns a COPY of value
	Set(key, val []byte) error
	Delete(key []byte) error
	Keys([]byte) ([][]byte, error)
}

Directories

Path Synopsis
Package badger provides a badger based repository implementation
Package badger provides a badger based repository implementation

Jump to

Keyboard shortcuts

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