kvdb

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: May 2, 2025 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	WithKeepAlive = func() SetOption {
		return func(cfg *setConfig) {
			cfg.keepalive = true
		}
	}
	WithTTL = func(ttlSeconds int64) SetOption {
		return func(cfg *setConfig) {
			cfg.ttl = ttlSeconds
		}
	}
	WithKeepAliveStoppedHandler = func(f func(err error)) SetOption {
		return func(cfg *setConfig) {
			cfg.onKeepaliveStopped = f
		}
	}
)
View Source
var (
	ErrStorageNotFound = errors.New("not found in storage")
)
View Source
var (
	// Storages Global instance of storages
	Storages *storages
)

Functions

func Init

func Init(ctx context.Context) (err error)

func InitBus

func InitBus(ctx context.Context) (err error)

func InitStorage

func InitStorage(ctx context.Context, db ...Database) (err error)

func PushMessage

func PushMessage(ctx context.Context, topic string, payload any, ttl int64, wait ...bool) (err error)

func RegisterBusHandler

func RegisterBusHandler(_ context.Context, topic string, handler MessageHandler)

Types

type Config

type Config struct {
	// common
	Endpoints []string `json:"endpoints"`
	Username  string   `json:"username"`
	Password  string   `json:"password"`
	// Etcd tls
	Tls *TlsConfig `json:"tls"`
}

Config for registry

type Database

type Database interface {
	// Get values from database by key
	Get(ctx context.Context, key string) (v []*KV, err error)
	// GetPrefix values from database by prefixed key
	GetPrefix(ctx context.Context, key string) (v []*KV, err error)
	// Set value to database
	Set(ctx context.Context, key string, value interface{}, opts ...SetOption) (err error)
	// Delete value from database
	Delete(ctx context.Context, key string) (err error)
	// Watch database changes
	Watch(ctx context.Context, key string, handler WatchHandler) (err error)
	// Locker distribute lock
	Locker(ctx context.Context, topic string) (locker sync.Locker, err error)
}

Database abstract key-value database ability

var (
	Raw Database
)

func MustGetDatabase

func MustGetDatabase(ctx context.Context) Database

type Etcd

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

func NewEtcd

func NewEtcd(ctx context.Context, cfg Config) (h *Etcd, err error)

func (*Etcd) Delete

func (e *Etcd) Delete(ctx context.Context, key string) (err error)

func (*Etcd) Get

func (e *Etcd) Get(ctx context.Context, key string) (v []*KV, err error)

func (*Etcd) GetPrefix

func (e *Etcd) GetPrefix(ctx context.Context, key string) (v []*KV, err error)

func (*Etcd) Locker

func (e *Etcd) Locker(ctx context.Context, topic string) (locker sync.Locker, err error)

func (*Etcd) Set

func (e *Etcd) Set(ctx context.Context, key string, value interface{}, ops ...SetOption) (err error)

func (*Etcd) Watch

func (e *Etcd) Watch(ctx context.Context, key string, handler WatchHandler) (err error)

type Event

type Event struct {
	KV
	Type EventType
}

Event of database key value changes

type EventType

type EventType string

EventType of instance change

const (
	EventTypeCreate EventType = "create"
	EventTypeUpdate EventType = "upsert"
	EventTypeDelete EventType = "delete"
)

event type define

type KV

type KV struct {
	Key   string
	Value *g.Var
}

KV kv

type Message

type Message struct {
	Id        string `json:"id"`
	Topic     string `json:"topic"`
	Payload   any    `json:"payload"`
	From      string `json:"from"`
	ExpiredAt int64  `json:"expired_at"`
	HasAck    bool   `json:"has_ack"`
	Err       string `json:"err"`
}

func (Message) Ack

func (m Message) Ack(ctx context.Context, err ...error)

func (Message) Error

func (m Message) Error() error

type MessageHandler

type MessageHandler interface {
	Handle(ctx context.Context, msg *Message)
	After(ctx context.Context, msg *Message)
}

type Mutex

type Mutex struct {
	sync.Locker
	// contains filtered or unexported fields
}

func NewMutex

func NewMutex(ctx context.Context, name string, database ...Database) (mu Mutex, err error)

type SetOption

type SetOption func(cfg *setConfig)

SetOption set handler

type Storage

type Storage interface {
	// Get value
	Get(ctx context.Context, key ...string) (v []*KV, err error)
	// Set value
	Set(ctx context.Context, key string, value interface{}) (err error)
	// SetTTL set value with ttl in second
	SetTTL(ctx context.Context, key string, value interface{}, ttl int64, keepalive ...bool) (err error)
	// Delete value
	Delete(ctx context.Context, key string) (err error)
}

Storage interface

type StorageConfig

type StorageConfig struct {
	Separator string `json:"separator"`
}

StorageConfig for storage module

type StorageEventHandler

type StorageEventHandler func(t EventType, key string, value interface{})

StorageEventHandler process storage event

type TlsConfig

type TlsConfig struct {
	InsecureSkipVerify bool `json:"insecure_skip_verify"`
}

TlsConfig ...

type WatchHandler

type WatchHandler func(ctx context.Context, e Event)

WatchHandler watch registry

Jump to

Keyboard shortcuts

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