flam package - github.com/cjdias/flam-in-go - Go Packages

flam

package module
v0.3.1 Latest Latest
Warning

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

Go to latest
Published: Apr 21, 2026 License: MIT Imports: 32 Imported by: 0

README

flam

flam-in-go is a base application framework package using the Uber's dig dependency injection package

Documentation

Index

Constants

View Source
const (
	DiskCreatorGroup                    = "flam.disks.creator"
	DiskDriverOS                        = "flam.disks.driver.os"
	DiskDriverMemory                    = "flam.disks.driver.memory"
	ConfigParserCreatorGroup            = "flam.config.parsers.creator"
	ConfigParserDriverYaml              = "flam.config.parsers.driver.yaml"
	ConfigParserDriverJson              = "flam.config.parsers.driver.json"
	ConfigSourceCreatorGroup            = "flam.config.sources.creator"
	ConfigSourceDriverEnv               = "flam.config.sources.driver.env"
	ConfigSourceDriverFile              = "flam.config.sources.driver.file"
	ConfigSourceDriverObservableFile    = "flam.config.sources.driver.observable-file"
	ConfigSourceDriverDir               = "flam.config.sources.driver.dir"
	ConfigSourceDriverRest              = "flam.config.sources.driver.rest"
	ConfigSourceDriverObservableRest    = "flam.config.sources.driver.observable-rest"
	LogSerializerCreatorGroup           = "flam.log.serializers.creator"
	LogSerializerDriverString           = "flam.log.serializers.driver.string"
	LogSerializerDriverJson             = "flam.log.serializers.driver.json"
	LogStreamCreatorGroup               = "flam.log.streams.creator"
	LogStreamDriverConsole              = "flam.log.streams.driver.console"
	LogStreamDriverFile                 = "flam.log.streams.driver.file"
	LogStreamDriverRotatingFile         = "flam.log.streams.driver.rotating-file"
	DatabaseConfigCreatorGroup          = "flam.database.configs.creator"
	DatabaseConfigDriverDefault         = "flam.database.configs.drivers.default"
	DatabaseConfigLoggerDefault         = "flam.database.configs.loggers.default"
	DatabaseConfigLoggerDiscard         = "flam.database.configs.loggers.discard"
	DatabaseDialectCreatorGroup         = "flam.database.dialects.creator"
	DatabaseDialectDriverSqlite         = "flam.database.dialects.drivers.sqlite"
	DatabaseDialectDriverMySql          = "flam.database.dialects.drivers.mysql"
	DatabaseDialectDriverPostgres       = "flam.database.dialects.drivers.postgres"
	MigratorLoggerCreatorGroup          = "flam.migration.loggers.creator"
	MigratorLoggerDriverDefault         = "flam.migration.loggers.driver.default"
	MigratorCreatorGroup                = "flam.migration.migrators.creator"
	MigratorDriverDefault               = "flam.migration.migrators.driver.default"
	MigrationGroup                      = "flam.migration.migrations"
	RedisConnectionCreatorGroup         = "flam.redis.connections.creator"
	RedisConnectionDriverDefault        = "flam.redis.connections.driver.default"
	RedisConnectionDriverMini           = "flam.redis.connections.driver.mini"
	CacheKeyGeneratorCreatorGroup       = "flam.cache.key_generators.creator"
	CacheSerializerCreatorGroup         = "flam.cache.serializers.creator"
	CacheAdaptorCreatorGroup            = "flam.cache.adaptors.creator"
	CacheAdaptorDriverRedis             = "flam.cache.adaptors.driver.redis"
	TranslatorCreatorGroup              = "flam.translators.creator"
	TranslatorDriverEnglish             = "flam.translators.driver.english"
	ValidatorParserCreatorGroup         = "flam.validators.parsers.creator"
	ValidatorParserDriverDefault        = "flam.validators.parsers.driver.default"
	ValidatorErrorConverterCreatorGroup = "flam.validators.converters.creator"
	ValidatorCreatorGroup               = "flam.validators.creator"
	ValidatorDriverDefault              = "flam.validators.driver.default"
	ProcessGroup                        = "flam.process"
	WatchdogLoggerCreatorGroup          = "flam.watchdog.loggers.creator"
	WatchdogLoggerDriverDefault         = "flam.watchdog.loggers.driver.default"

	DefaultConfigSourceId            = "__app"
	DefaultConfigBoot                = false
	DefaultConfigObserverFrequency   = time.Minute
	DefaultConfigFileParserId        = "yaml"
	DefaultConfigFileDiskId          = "os"
	DefaultConfigRestParserId        = "json"
	DefaultConfigRestConfigPath      = "data.config"
	DefaultConfigRestTimestampPath   = "data.timestamp"
	DefaultConfigPriority            = 0
	DefaultLogBoot                   = false
	DefaultLogFlusherFrequency       = time.Minute
	DefaultLogLevel                  = LogInfo
	DefaultLogSerializerId           = "json"
	DefaultLogDiskId                 = "os"
	DefaultDatabaseSqliteHost        = ":memory:"
	DefaultDatabaseMySqlProtocol     = "tcp"
	DefaultDatabaseMySqlHost         = "127.0.0.1"
	DefaultDatabaseMySqlPort         = 3306
	DefaultDatabasePostgresHost      = "127.0.0.1"
	DefaultDatabasePostgresPort      = 5432
	DefaultDatabaseDialectId         = ""
	DefaultDatabaseConfigId          = ""
	DefaultMigratorBoot              = false
	DefaultMigratorConnectionId      = ""
	DefaultMigratorLoggerId          = ""
	DefaultMigratorLoggerChannel     = "flam"
	DefaultMigratorLoggerStartLevel  = LogInfo
	DefaultMigratorLoggerErrorLevel  = LogError
	DefaultMigratorLoggerDoneLevel   = LogInfo
	DefaultRedisMiniBoot             = false
	DefaultRedisHost                 = "127.0.0.1"
	DefaultRedisPort                 = 6379
	DefaultRedisPassword             = ""
	DefaultRedisDatabase             = 0
	DefaultCacheKeyGeneratorId       = ""
	DefaultCacheSerializerId         = ""
	DefaultValidatorAnnotation       = "paramId"
	DefaultValidatorTranslatorId     = ""
	DefaultValidatorParserId         = ""
	DefaultValidatorErrorConverterId = ""
	DefaultKennelRun                 = false
	DefaultWatchdogLoggerId          = ""
	DefaultWatchdogLoggerChannel     = "flam"
	DefaultWatchdogLoggerStartLevel  = LogInfo
	DefaultWatchdogLoggerErrorLevel  = LogError
	DefaultWatchdogLoggerDoneLevel   = LogInfo

	PathDisks                            = "flam.disks"
	PathConfigBoot                       = "flam.config.boot"
	PathConfigObserverFrequency          = "flam.config.observer"
	PathConfigDefaultFileParserId        = "flam.config.defaults.file.parser_id"
	PathConfigDefaultFileDiskId          = "flam.config.defaults.file.disk_id"
	PathConfigDefaultRestParserId        = "flam.config.defaults.rest.parser_id"
	PathConfigDefaultRestConfigPath      = "flam.config.defaults.rest.config.path"
	PathConfigDefaultRestTimestampPath   = "flam.config.defaults.rest.timestamp.path"
	PathConfigDefaultPriority            = "flam.config.defaults.priority"
	PathConfigParsers                    = "flam.config.parsers"
	PathConfigSources                    = "flam.config.sources"
	PathLogBoot                          = "flam.log.boot"
	PathLogFlusherFrequency              = "flam.log.flusher.frequency"
	PathLogDefaultLevel                  = "flam.log.defaults.level"
	PathLogDefaultSerializerId           = "flam.log.defaults.serializer_id"
	PathLogDefaultDiskId                 = "flam.log.defaults.disk_id"
	PathLogSerializers                   = "flam.log.serializers"
	PathLogStreams                       = "flam.log.streams"
	PathDatabaseDefaultSqliteHost        = "flam.database.defaults.sqlite.host"
	PathDatabaseDefaultMySqlProtocol     = "flam.database.defaults.mysql.protocol"
	PathDatabaseDefaultMySqlHost         = "flam.database.defaults.mysql.host"
	PathDatabaseDefaultMySqlPort         = "flam.database.defaults.mysql.port"
	PathDatabaseDefaultPostgresHost      = "flam.database.defaults.postgres.host"
	PathDatabaseDefaultPostgresPort      = "flam.database.defaults.postgres.port"
	PathDatabaseDefaultDialectId         = "flam.database.defaults.dialect_id"
	PathDatabaseDefaultConfigId          = "flam.database.defaults.config_id"
	PathDatabaseConfigs                  = "flam.database.configs"
	PathDatabaseDialects                 = "flam.database.dialects"
	PathDatabaseConnections              = "flam.database.connections"
	PathMigratorBoot                     = "flam.migrator.boot"
	PathMigratorDefaultConnectionId      = "flam.migrator.defaults.connection_id"
	PathMigratorDefaultLoggerId          = "flam.migrator.defaults.logger_id"
	PathMigratorDefaultLoggerChannel     = "flam.migrator.defaults.logger.channel"
	PathMigratorDefaultLoggerStartLevel  = "flam.migrator.defaults.logger.start.level"
	PathMigratorDefaultLoggerErrorLevel  = "flam.migrator.defaults.logger.error.level"
	PathMigratorDefaultLoggerDoneLevel   = "flam.migrator.defaults.logger.done.level"
	PathMigratorLoggers                  = "flam.migrator.loggers"
	PathMigrators                        = "flam.migrators"
	PathRedisMiniBoot                    = "flam.redis.mini.boot"
	PathRedisDefaultHost                 = "flam.redis.defaults.host"
	PathRedisDefaultPort                 = "flam.redis.defaults.port"
	PathRedisDefaultPassword             = "flam.redis.defaults.password"
	PathRedisDefaultDatabase             = "flam.redis.defaults.database"
	PathRedisConnections                 = "flam.redis.connections"
	PathCacheDefaultKeyGeneratorId       = "flam.cache.default.key_generator_id"
	PathCacheDefaultSerializerId         = "flam.cache.default.serializer_id"
	PathCacheKeyGenerators               = "flam.cache.key_generators"
	PathCacheSerializers                 = "flam.cache.serializers"
	PathCacheAdaptors                    = "flam.cache.adaptors"
	PathTranslators                      = "flam.translators"
	PathValidatorDefaultAnnotation       = "flam.validator.defaults.annotation"
	PathValidatorDefaultTranslatorId     = "flam.validator.defaults.translator_id"
	PathValidatorDefaultParserId         = "flam.validator.defaults.parser_id"
	PathValidatorDefaultErrorConverterId = "flam.validator.defaults.error_converter_id"
	PathValidatorParsers                 = "flam.validator.parsers"
	PathValidatorErrorConverters         = "flam.validator.converters"
	PathValidators                       = "flam.validators"
	PathKennelRun                        = "flam.kennel.run"
	PathWatchdogDefaultLoggerId          = "flam.watchdog.defaults.logger_id"
	PathWatchdogDefaultLoggerChannel     = "flam.watchdog.defaults.log.channel"
	PathWatchdogDefaultLoggerStartLevel  = "flam.watchdog.defaults.log.start.level"
	PathWatchdogDefaultLoggerErrorLevel  = "flam.watchdog.defaults.log.error.level"
	PathWatchdogDefaultLoggerDoneLevel   = "flam.watchdog.defaults.log.done.level"
	PathWatchdogLoggers                  = "flam.watchdog.loggers"
	PathProcesses                        = "flam.processes"
)

Variables

View Source
var (
	ErrNilReference                      = errors.New("nil reference")
	ErrBagInvalidPath                    = errors.New("invalid bag path")
	ErrUnknownResource                   = errors.New("unknown resource")
	ErrInvalidResourceConfig             = errors.New("invalid resource config")
	ErrUnacceptedResourceConfig          = errors.New("unaccepted resource config")
	ErrDuplicateResource                 = errors.New("duplicate resource")
	ErrSubscriptionNotFound              = errors.New("subscription not found")
	ErrDuplicateSubscription             = errors.New("duplicate subscription")
	ErrInvalidSubscriptionChannelPattern = errors.New("invalid subscription channel pattern")
	ErrPublishFailed                     = errors.New("publish failed")
	ErrDuplicateProvider                 = errors.New("duplicate provider")
	ErrRestConfigSourceConfigNotFound    = errors.New("config rest source config source data not found")
	ErrInvalidRestConfigSourceConfig     = errors.New("invalid config rest source config source data")
	ErrRestConfigSourceTimestampNotFound = errors.New("config rest source config source timestamp not found")
	ErrInvalidRestConfigSourceTimestamp  = errors.New("invalid config rest source config source timestamp")
	ErrDuplicateConfigObserver           = errors.New("duplicate config observer")
	ErrUnknownDatabaseLogType            = errors.New("unknown database log type")
	ErrUnknownDatabaseLogLevel           = errors.New("unknown database log level")
	ErrMissingCacheObject                = errors.New("missing cache object")
	ErrLanguageNotFound                  = errors.New("translator language not found")
	ErrProcessNotFound                   = errors.New("watchdog process not found")
	ErrProcessIsRunning                  = errors.New("watchdog process is currently running")
	ErrProcessRunningError               = errors.New("watchdog process running error")
)

Functions

func BagNormalization

func BagNormalization(
	val any,
) any

Types

type Application

type Application interface {
	Container() *dig.Container
	HasProvider(id string) bool
	Register(provider Provider) error
	Boot() error
	Run() error
	Close() error
}

func NewApplication

func NewApplication(
	config ...Bag,
) Application

type Bag

type Bag map[string]any

func (*Bag) Bag

func (bag *Bag) Bag(
	path string,
	def ...Bag,
) Bag

func (*Bag) Bool

func (bag *Bag) Bool(
	path string,
	def ...bool,
) bool

func (*Bag) Clone

func (bag *Bag) Clone() Bag

func (*Bag) Duration

func (bag *Bag) Duration(
	path string,
	def ...time.Duration,
) time.Duration

func (*Bag) Entries

func (bag *Bag) Entries() []string

func (*Bag) Float32

func (bag *Bag) Float32(
	path string,
	def ...float32,
) float32

func (*Bag) Float64

func (bag *Bag) Float64(
	path string,
	def ...float64,
) float64

func (*Bag) Get

func (bag *Bag) Get(
	path string,
	def ...any,
) any

func (*Bag) Has

func (bag *Bag) Has(
	path string,
) bool

func (*Bag) Int

func (bag *Bag) Int(
	path string,
	def ...int,
) int

func (*Bag) Int8

func (bag *Bag) Int8(
	path string,
	def ...int8,
) int8

func (*Bag) Int16

func (bag *Bag) Int16(
	path string,
	def ...int16,
) int16

func (*Bag) Int32

func (bag *Bag) Int32(
	path string,
	def ...int32,
) int32

func (*Bag) Int64

func (bag *Bag) Int64(
	path string,
	def ...int64,
) int64

func (*Bag) Merge

func (bag *Bag) Merge(
	src Bag,
) *Bag

func (*Bag) Populate

func (bag *Bag) Populate(
	target any,
	path ...string,
) error

func (*Bag) Set

func (bag *Bag) Set(
	path string,
	value any,
) error

func (*Bag) Slice

func (bag *Bag) Slice(
	path string,
	def ...[]any,
) []any

func (*Bag) String

func (bag *Bag) String(
	path string,
	def ...string,
) string

func (*Bag) StringMap

func (bag *Bag) StringMap(
	path string,
	def ...map[string]any,
) map[string]any

func (*Bag) StringMapString

func (bag *Bag) StringMapString(
	path string,
	def ...map[string]string,
) map[string]string

func (*Bag) StringSlice

func (bag *Bag) StringSlice(
	path string,
	def ...[]string,
) []string

func (*Bag) Uint

func (bag *Bag) Uint(
	path string,
	def ...uint,
) uint

func (*Bag) Uint8

func (bag *Bag) Uint8(
	path string,
	def ...uint8,
) uint8

func (*Bag) Uint16

func (bag *Bag) Uint16(
	path string,
	def ...uint16,
) uint16

func (*Bag) Uint32

func (bag *Bag) Uint32(
	path string,
	def ...uint32,
) uint32

func (*Bag) Uint64

func (bag *Bag) Uint64(
	path string,
	def ...uint64,
) uint64

type BootableProvider

type BootableProvider interface {
	Provider

	Boot(container *dig.Container) error
}

type CacheAdaptor

type CacheAdaptor interface {
	Has(obj ...any) ([]bool, error)
	Get(obj ...any) ([]any, error)
	Set(obj ...any) error
	SetEphemeral(ttl time.Duration, obj ...any) error
	Del(obj ...any) error
}

type CacheAdaptorCreator

type CacheAdaptorCreator interface {
	Accept(config Bag) bool
	Create(config Bag) (CacheAdaptor, error)
}

type CacheAdaptorFactory

type CacheAdaptorFactory interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (CacheAdaptor, error)
	Store(id string, adaptor CacheAdaptor) error
	Remove(id string) error
	RemoveAll() error
}

type CacheKeyGenerator

type CacheKeyGenerator interface {
	Generate(obj any) (string, error)
}

type CacheKeyGeneratorCreator

type CacheKeyGeneratorCreator interface {
	Accept(config Bag) bool
	Create(config Bag) (CacheKeyGenerator, error)
}

type CacheKeyGeneratorFactory

type CacheKeyGeneratorFactory interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (CacheKeyGenerator, error)
	Store(id string, generator CacheKeyGenerator) error
	Remove(id string) error
	RemoveAll() error
}

type CacheSerializer

type CacheSerializer interface {
	Serialize(obj any) (string, error)
	Deserialize(data string, obj any) error
}

type CacheSerializerCreator

type CacheSerializerCreator interface {
	Accept(config Bag) bool
	Create(config Bag) (CacheSerializer, error)
}

type CacheSerializerFactory

type CacheSerializerFactory interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (CacheSerializer, error)
	Store(id string, serializer CacheSerializer) error
	Remove(id string) error
	RemoveAll() error
}

type ClosableProvider

type ClosableProvider interface {
	Provider

	Close(container *dig.Container) error
}

type Config

type Config interface {
	Entries() []string
	Has(path string) bool
	Get(path string, def ...any) any
	Bool(path string, def ...bool) bool
	Int(path string, def ...int) int
	Int8(path string, def ...int8) int8
	Int16(path string, def ...int16) int16
	Int32(path string, def ...int32) int32
	Int64(path string, def ...int64) int64
	Uint(path string, def ...uint) uint
	Uint8(path string, def ...uint8) uint8
	Uint16(path string, def ...uint16) uint16
	Uint32(path string, def ...uint32) uint32
	Uint64(path string, def ...uint64) uint64
	Float32(path string, def ...float32) float32
	Float64(path string, def ...float64) float64
	String(path string, def ...string) string
	StringMap(path string, def ...map[string]any) map[string]any
	StringMapString(path string, def ...map[string]string) map[string]string
	Slice(path string, def ...[]any) []any
	StringSlice(path string, def ...[]string) []string
	Duration(path string, def ...time.Duration) time.Duration
	Bag(path string, def ...Bag) Bag
	Set(path string, value any) error
	Populate(target any, path ...string) error

	HasObserver(id, path string) bool
	AddObserver(id, path string, callback ConfigObserver) error
	RemoveObserver(id string) error
}

type ConfigObserver

type ConfigObserver func(old, new any)

type ConfigParser

type ConfigParser interface {
	io.Closer

	Parse(reader io.Reader) (Bag, error)
}

type ConfigParserCreator

type ConfigParserCreator interface {
	Accept(config Bag) bool
	Create(config Bag) (ConfigParser, error)
}

type ConfigParserFactory

type ConfigParserFactory interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (ConfigParser, error)
	Store(id string, parser ConfigParser) error
	Remove(id string) error
	RemoveAll() error
}

type ConfigRestClient

type ConfigRestClient interface {
	Do(req *http.Request) (*http.Response, error)
}

type ConfigRestClientGenerator

type ConfigRestClientGenerator interface {
	Create() (ConfigRestClient, error)
}

type ConfigSource

type ConfigSource interface {
	io.Closer

	GetPriority() int
	SetPriority(priority int)
	Get(path string, def ...any) any
}

type ConfigSourceCreator

type ConfigSourceCreator interface {
	Accept(config Bag) bool
	Create(config Bag) (ConfigSource, error)
}

type ConfigSourceFactory

type ConfigSourceFactory interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (ConfigSource, error)
	Store(id string, source ConfigSource) error
	Remove(id string) error
	RemoveAll() error

	SetPriority(id string, priority int) error
	Reload() error
}

type ConfigurableProvider

type ConfigurableProvider interface {
	Provider

	Config(config *Bag) error
}

type DatabaseConfig

type DatabaseConfig *gorm.Config

type DatabaseConfigCreator

type DatabaseConfigCreator interface {
	Accept(config Bag) bool
	Create(config Bag) (DatabaseConfig, error)
}

type DatabaseConfigFactory

type DatabaseConfigFactory interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (DatabaseConfig, error)
	Store(id string, config DatabaseConfig) error
	Remove(id string) error
	RemoveAll() error
}

type DatabaseConnection

type DatabaseConnection interface {
	AddError(e error) error
	Assign(attrs ...interface{}) *gorm.DB
	Association(column string) *gorm.Association
	Attrs(attrs ...interface{}) *gorm.DB
	AutoMigrate(dst ...interface{}) error
	Begin(opts ...*sql.TxOptions) *gorm.DB
	Clauses(conds ...clause.Expression) *gorm.DB
	Commit() *gorm.DB
	Connection(fc func(*gorm.DB) error) error
	Count(count *int64) *gorm.DB
	Create(value interface{}) *gorm.DB
	CreateInBatches(value interface{}, batchSize int) *gorm.DB
	DB() (*sql.DB, error)
	Debug() *gorm.DB
	Delete(value interface{}, conds ...interface{}) *gorm.DB
	Distinct(args ...interface{}) *gorm.DB
	Exec(sql string, values ...interface{}) *gorm.DB
	Find(dest interface{}, conds ...interface{}) *gorm.DB
	FindInBatches(dest interface{}, batchSize int, fc func(tx *gorm.DB, batch int) error) *gorm.DB
	First(dest interface{}, conds ...interface{}) *gorm.DB
	FirstOrCreate(dest interface{}, conds ...interface{}) *gorm.DB
	FirstOrInit(dest interface{}, conds ...interface{}) *gorm.DB
	Get(key string) (interface{}, bool)
	Group(name string) *gorm.DB
	Having(query interface{}, args ...interface{}) *gorm.DB
	InnerJoins(query string, args ...interface{}) *gorm.DB
	InstanceGet(key string) (interface{}, bool)
	InstanceSet(key string, value interface{}) *gorm.DB
	Joins(query string, args ...interface{}) *gorm.DB
	Last(dest interface{}, conds ...interface{}) *gorm.DB
	Limit(limit int) *gorm.DB
	MapColumns(m map[string]string) *gorm.DB
	Migrator() gorm.Migrator
	Model(value interface{}) *gorm.DB
	Not(query interface{}, args ...interface{}) *gorm.DB
	Offset(offset int) *gorm.DB
	Omit(columns ...string) *gorm.DB
	Or(query interface{}, args ...interface{}) *gorm.DB
	Order(value interface{}) *gorm.DB
	Pluck(column string, dest interface{}) *gorm.DB
	Preload(query string, args ...interface{}) *gorm.DB
	Raw(sql string, values ...interface{}) *gorm.DB
	Rollback() *gorm.DB
	RollbackTo(name string) *gorm.DB
	Row() *sql.Row
	Rows() (*sql.Rows, error)
	Save(value interface{}) *gorm.DB
	SavePoint(name string) *gorm.DB
	Scan(dest interface{}) *gorm.DB
	ScanRows(rows *sql.Rows, dest interface{}) error
	Scopes(funcs ...func(*gorm.DB) *gorm.DB) *gorm.DB
	Select(query interface{}, args ...interface{}) *gorm.DB
	Session(config *gorm.Session) *gorm.DB
	Set(key string, value interface{}) *gorm.DB
	SetupJoinTable(model interface{}, field string, joinTable interface{}) error
	Table(name string, args ...interface{}) *gorm.DB
	Take(dest interface{}, conds ...interface{}) *gorm.DB
	ToSQL(queryFn func(tx *gorm.DB) *gorm.DB) string
	Transaction(fc func(tx *gorm.DB) error, opts ...*sql.TxOptions) error
	Unscoped() *gorm.DB
	Update(column string, value interface{}) *gorm.DB
	UpdateColumn(column string, value interface{}) *gorm.DB
	UpdateColumns(values interface{}) *gorm.DB
	Updates(values interface{}) *gorm.DB
	Use(plugin gorm.Plugin) error
	Where(query interface{}, args ...interface{}) *gorm.DB
	WithContext(ctx context.Context) *gorm.DB
}

type DatabaseConnectionFactory

type DatabaseConnectionFactory interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (DatabaseConnection, error)
	Store(id string, connection DatabaseConnection) error
	Remove(id string) error
	RemoveAll() error
}

type DatabaseDialect

type DatabaseDialect interface {
	gorm.Dialector
}

type DatabaseDialectCreator

type DatabaseDialectCreator interface {
	Accept(config Bag) bool
	Create(config Bag) (DatabaseDialect, error)
}

type DatabaseDialectFactory

type DatabaseDialectFactory interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (DatabaseDialect, error)
	Store(id string, dialect DatabaseDialect) error
	Remove(id string) error
	RemoveAll() error
}

type Disk

type Disk interface {
	afero.Fs
}

type DiskCreator

type DiskCreator interface {
	Accept(config Bag) bool
	Create(config Bag) (Disk, error)
}

type DiskFactory

type DiskFactory interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (Disk, error)
	Store(id string, disk Disk) error
	Remove(id string) error
	RemoveAll() error
}

type Error

type Error interface {
	error

	Unwrap() error
	GetCode() int
	SetCode(code int) Error
	Context() *Bag
	Set(path string, value any) Error
	Get(path string, def ...any) any
}

func NewError

func NewError(
	msg string,
	ctx ...Bag,
) Error

func NewErrorFrom

func NewErrorFrom(
	e error,
	msg string,
	ctx ...Bag,
) Error

type Executor

type Executor interface {
	Queue(callback any) Executor
	Run(container *dig.Container) error
}

func NewExecutor

func NewExecutor() Executor

type Factory

type Factory[R FactoryResource] interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (R, error)
	Store(id string, value R) error
	Generate(id string) (R, error)
	GenerateAll() error
	Remove(id string) error
	RemoveAll() error
}

func NewFactory

func NewFactory[R FactoryResource](
	creators []FactoryResourceCreator[R],
	factoryConfig FactoryConfig,
	factoryConfigValidator FactoryConfigValidator,
	factoryConfigPath string,
) (Factory[R], error)

type FactoryConfig

type FactoryConfig interface {
	Get(path string, def ...any) Bag
}

type FactoryConfigValidator

type FactoryConfigValidator func(id string, config Bag) error

func DriverFactoryConfigValidator

func DriverFactoryConfigValidator(
	resourceName string,
) FactoryConfigValidator

type FactoryResource

type FactoryResource any

type FactoryResourceCreator

type FactoryResourceCreator[R FactoryResource] interface {
	Accept(config Bag) bool
	Create(config Bag) (R, error)
}

type Kennel

type Kennel interface {
	io.Closer

	Available() []string
	Has(id string) bool
	IsActive(id string) bool
	Activate(id string) error
	Deactivate(id string) error
}

type LogLevel

type LogLevel int
const (
	LogNone LogLevel = iota
	LogFatal
	LogError
	LogWarning
	LogNotice
	LogInfo
	LogDebug
)

func LogLevelFrom

func LogLevelFrom(
	val any,
	def ...LogLevel,
) LogLevel

func (LogLevel) String

func (level LogLevel) String() string

type LogSerializer

type LogSerializer interface {
	Close() error

	Serialize(timestamp time.Time, level LogLevel, message string, ctx Bag) string
}

type LogSerializerCreator

type LogSerializerCreator interface {
	Accept(config Bag) bool
	Create(config Bag) (LogSerializer, error)
}

type LogSerializerFactory

type LogSerializerFactory interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (LogSerializer, error)
	Store(id string, serializer LogSerializer) error
	Remove(id string) error
	RemoveAll() error
}

type LogStream

type LogStream interface {
	Close() error

	GetLevel() LogLevel
	SetLevel(level LogLevel) error

	HasChannel(channel string) bool
	ListChannels() []string
	AddChannel(channel string) error
	RemoveChannel(channel string) error
	RemoveAllChannels() error

	Signal(timestamp time.Time, level LogLevel, channel, message string, ctx Bag) error
	Broadcast(timestamp time.Time, level LogLevel, message string, ctx Bag) error
}

type LogStreamCreator

type LogStreamCreator interface {
	Accept(config Bag) bool
	Create(config Bag) (LogStream, error)
}

type LogStreamFactory

type LogStreamFactory interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (LogStream, error)
	Store(id string, stream LogStream) error
	Remove(id string) error
	RemoveAll() error
}

type Logger

type Logger interface {
	Signal(level LogLevel, channel, message string, ctx ...Bag)
	SignalFatal(channel, message string, ctx ...Bag)
	SignalError(channel, message string, ctx ...Bag)
	SignalWarning(channel, message string, ctx ...Bag)
	SignalNotice(channel, message string, ctx ...Bag)
	SignalInfo(channel, message string, ctx ...Bag)
	SignalDebug(channel, message string, ctx ...Bag)
	Broadcast(level LogLevel, message string, ctx ...Bag)
	BroadcastFatal(message string, ctx ...Bag)
	BroadcastError(message string, ctx ...Bag)
	BroadcastWarning(message string, ctx ...Bag)
	BroadcastNotice(message string, ctx ...Bag)
	BroadcastInfo(message string, ctx ...Bag)
	BroadcastDebug(message string, ctx ...Bag)
	Flush() error
}

type Migration

type Migration interface {
	Group() string
	Version() string
	Description() string
	Up(connection DatabaseConnection) error
	Down(connection DatabaseConnection) error
}

type MigrationInfo

type MigrationInfo struct {
	Version     string
	Description string
	InstalledAt *time.Time
}

type Migrator

type Migrator interface {
	List() ([]MigrationInfo, error)
	Current() (*MigrationInfo, error)
	CanUp() bool
	CanDown() bool
	Up() error
	UpAll() error
	Down() error
	DownAll() error
}

type MigratorCreator

type MigratorCreator interface {
	Accept(config Bag) bool
	Create(config Bag) (Migrator, error)
}

type MigratorFactory

type MigratorFactory interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (Migrator, error)
	Store(id string, migrator Migrator) error
	Remove(id string) error
	RemoveAll() error
}

type MigratorLogger

type MigratorLogger interface {
	LogUpStart(info MigrationInfo)
	LogUpError(info MigrationInfo, e error)
	LogUpDone(info MigrationInfo)

	LogDownStart(info MigrationInfo)
	LogDownError(info MigrationInfo, e error)
	LogDownDone(info MigrationInfo)
}

type MigratorLoggerCreator

type MigratorLoggerCreator interface {
	Accept(config Bag) bool
	Create(config Bag) (MigratorLogger, error)
}

type MigratorLoggerFactory

type MigratorLoggerFactory interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (MigratorLogger, error)
	Store(id string, logger MigratorLogger) error
	Remove(id string) error
	RemoveAll() error
}

type ObservableConfigSource

type ObservableConfigSource interface {
	ConfigSource

	Reload() (bool, error)
}

type Process

type Process interface {
	io.Closer

	Id() string
	IsRunning() bool
	Run() error
	Terminate()
}

type Provider

type Provider interface {
	Id() string
	Register(container *dig.Container) error
}

type PubSub

type PubSub[I comparable, C comparable] interface {
	Subscribe(id I, channel C, handler PubSubHandler[I, C]) error
	Unsubscribe(id I, channel C) error
	Publish(channel C, data ...any) error
}

func NewPubSub

func NewPubSub[I comparable, C comparable]() PubSub[I, C]

type PubSubHandler

type PubSubHandler[I comparable, C comparable] func(channel C, data ...any) error

type RedisConnection

type RedisConnection interface {
	ACLDryRun(ctx context.Context, username string, command ...interface{}) *redis.StringCmd
	ACLLog(ctx context.Context, count int64) *redis.ACLLogCmd
	ACLLogReset(ctx context.Context) *redis.StatusCmd
	AddHook(hook redis.Hook)
	Append(ctx context.Context, key, value string) *redis.IntCmd
	BFAdd(ctx context.Context, key string, element interface{}) *redis.BoolCmd
	BFCard(ctx context.Context, key string) *redis.IntCmd
	BFExists(ctx context.Context, key string, element interface{}) *redis.BoolCmd
	BFInfo(ctx context.Context, key string) *redis.BFInfoCmd
	BFInfoArg(ctx context.Context, key, option string) *redis.BFInfoCmd
	BFInfoCapacity(ctx context.Context, key string) *redis.BFInfoCmd
	BFInfoExpansion(ctx context.Context, key string) *redis.BFInfoCmd
	BFInfoFilters(ctx context.Context, key string) *redis.BFInfoCmd
	BFInfoItems(ctx context.Context, key string) *redis.BFInfoCmd
	BFInfoSize(ctx context.Context, key string) *redis.BFInfoCmd
	BFInsert(ctx context.Context, key string, options *redis.BFInsertOptions, elements ...interface{}) *redis.BoolSliceCmd
	BFLoadChunk(ctx context.Context, key string, iterator int64, data interface{}) *redis.StatusCmd
	BFMAdd(ctx context.Context, key string, elements ...interface{}) *redis.BoolSliceCmd
	BFMExists(ctx context.Context, key string, elements ...interface{}) *redis.BoolSliceCmd
	BFReserve(ctx context.Context, key string, errorRate float64, capacity int64) *redis.StatusCmd
	BFReserveExpansion(ctx context.Context, key string, errorRate float64, capacity, expansion int64) *redis.StatusCmd
	BFReserveNonScaling(ctx context.Context, key string, errorRate float64, capacity int64) *redis.StatusCmd
	BFReserveWithArgs(ctx context.Context, key string, options *redis.BFReserveOptions) *redis.StatusCmd
	BFScanDump(ctx context.Context, key string, iterator int64) *redis.ScanDumpCmd
	BLMPop(ctx context.Context, timeout time.Duration, direction string, count int64, keys ...string) *redis.KeyValuesCmd
	BLMove(ctx context.Context, source, destination, srcpos, destpos string, imeout time.Duration) *redis.StringCmd
	BLPop(ctx context.Context, timeout time.Duration, keys ...string) *redis.StringSliceCmd
	BRPop(ctx context.Context, timeout time.Duration, keys ...string) *redis.StringSliceCmd
	BRPopLPush(ctx context.Context, source, destination string, timeout time.Duration) *redis.StringCmd
	BZMPop(ctx context.Context, timeout time.Duration, order string, count int64, keys ...string) *redis.ZSliceWithKeyCmd
	BZPopMax(ctx context.Context, timeout time.Duration, keys ...string) *redis.ZWithKeyCmd
	BZPopMin(ctx context.Context, timeout time.Duration, keys ...string) *redis.ZWithKeyCmd
	BgRewriteAOF(ctx context.Context) *redis.StatusCmd
	BgSave(ctx context.Context) *redis.StatusCmd
	BitCount(ctx context.Context, key string, bitCount *redis.BitCount) *redis.IntCmd
	BitField(ctx context.Context, key string, values ...interface{}) *redis.IntSliceCmd
	BitFieldRO(ctx context.Context, key string, values ...interface{}) *redis.IntSliceCmd
	BitOpAnd(ctx context.Context, destKey string, keys ...string) *redis.IntCmd
	BitOpNot(ctx context.Context, destKey string, key string) *redis.IntCmd
	BitOpOr(ctx context.Context, destKey string, keys ...string) *redis.IntCmd
	BitOpXor(ctx context.Context, destKey string, keys ...string) *redis.IntCmd
	BitPos(ctx context.Context, key string, bit int64, pos ...int64) *redis.IntCmd
	BitPosSpan(ctx context.Context, key string, bit int8, start, end int64, span string) *redis.IntCmd
	CFAdd(ctx context.Context, key string, element interface{}) *redis.BoolCmd
	CFAddNX(ctx context.Context, key string, element interface{}) *redis.BoolCmd
	CFCount(ctx context.Context, key string, element interface{}) *redis.IntCmd
	CFDel(ctx context.Context, key string, element interface{}) *redis.BoolCmd
	CFExists(ctx context.Context, key string, element interface{}) *redis.BoolCmd
	CFInfo(ctx context.Context, key string) *redis.CFInfoCmd
	CFInsert(ctx context.Context, key string, options *redis.CFInsertOptions, elements ...interface{}) *redis.BoolSliceCmd
	CFInsertNX(ctx context.Context, key string, options *redis.CFInsertOptions, elements ...interface{}) *redis.IntSliceCmd
	CFLoadChunk(ctx context.Context, key string, iterator int64, data interface{}) *redis.StatusCmd
	CFMExists(ctx context.Context, key string, elements ...interface{}) *redis.BoolSliceCmd
	CFReserve(ctx context.Context, key string, capacity int64) *redis.StatusCmd
	CFReserveBucketSize(ctx context.Context, key string, capacity int64, bucketsize int64) *redis.StatusCmd
	CFReserveExpansion(ctx context.Context, key string, capacity int64, expansion int64) *redis.StatusCmd
	CFReserveMaxIterations(ctx context.Context, key string, capacity int64, maxiterations int64) *redis.StatusCmd
	CFReserveWithArgs(ctx context.Context, key string, options *redis.CFReserveOptions) *redis.StatusCmd
	CFScanDump(ctx context.Context, key string, iterator int64) *redis.ScanDumpCmd
	CMSIncrBy(ctx context.Context, key string, elements ...interface{}) *redis.IntSliceCmd
	CMSInfo(ctx context.Context, key string) *redis.CMSInfoCmd
	CMSInitByDim(ctx context.Context, key string, width, depth int64) *redis.StatusCmd
	CMSInitByProb(ctx context.Context, key string, errorRate, probability float64) *redis.StatusCmd
	CMSMerge(ctx context.Context, destKey string, sourceKeys ...string) *redis.StatusCmd
	CMSMergeWithWeight(ctx context.Context, destKey string, sourceKeys map[string]int64) *redis.StatusCmd
	CMSQuery(ctx context.Context, key string, elements ...interface{}) *redis.IntSliceCmd
	ClientGetName(ctx context.Context) *redis.StringCmd
	ClientID(ctx context.Context) *redis.IntCmd
	ClientInfo(ctx context.Context) *redis.ClientInfoCmd
	ClientKill(ctx context.Context, ipPort string) *redis.StatusCmd
	ClientKillByFilter(ctx context.Context, keys ...string) *redis.IntCmd
	ClientList(ctx context.Context) *redis.StringCmd
	ClientPause(ctx context.Context, dur time.Duration) *redis.BoolCmd
	ClientUnblock(ctx context.Context, id int64) *redis.IntCmd
	ClientUnblockWithError(ctx context.Context, id int64) *redis.IntCmd
	ClientUnpause(ctx context.Context) *redis.BoolCmd
	Close() error
	ClusterAddSlots(ctx context.Context, slots ...int) *redis.StatusCmd
	ClusterAddSlotsRange(ctx context.Context, min, max int) *redis.StatusCmd
	ClusterCountFailureReports(ctx context.Context, nodeID string) *redis.IntCmd
	ClusterCountKeysInSlot(ctx context.Context, slot int) *redis.IntCmd
	ClusterDelSlots(ctx context.Context, slots ...int) *redis.StatusCmd
	ClusterDelSlotsRange(ctx context.Context, min, max int) *redis.StatusCmd
	ClusterFailover(ctx context.Context) *redis.StatusCmd
	ClusterForget(ctx context.Context, nodeID string) *redis.StatusCmd
	ClusterGetKeysInSlot(ctx context.Context, slot int, count int) *redis.StringSliceCmd
	ClusterInfo(ctx context.Context) *redis.StringCmd
	ClusterKeySlot(ctx context.Context, key string) *redis.IntCmd
	ClusterLinks(ctx context.Context) *redis.ClusterLinksCmd
	ClusterMeet(ctx context.Context, host, port string) *redis.StatusCmd
	ClusterMyShardID(ctx context.Context) *redis.StringCmd
	ClusterNodes(ctx context.Context) *redis.StringCmd
	ClusterReplicate(ctx context.Context, nodeID string) *redis.StatusCmd
	ClusterResetHard(ctx context.Context) *redis.StatusCmd
	ClusterResetSoft(ctx context.Context) *redis.StatusCmd
	ClusterSaveConfig(ctx context.Context) *redis.StatusCmd
	ClusterShards(ctx context.Context) *redis.ClusterShardsCmd
	ClusterSlaves(ctx context.Context, nodeID string) *redis.StringSliceCmd
	ClusterSlots(ctx context.Context) *redis.ClusterSlotsCmd
	Command(ctx context.Context) *redis.CommandsInfoCmd
	CommandGetKeys(ctx context.Context, commands ...interface{}) *redis.StringSliceCmd
	CommandGetKeysAndFlags(ctx context.Context, commands ...interface{}) *redis.KeyFlagsCmd
	CommandList(ctx context.Context, filter *redis.FilterBy) *redis.StringSliceCmd
	ConfigGet(ctx context.Context, parameter string) *redis.MapStringStringCmd
	ConfigResetStat(ctx context.Context) *redis.StatusCmd
	ConfigRewrite(ctx context.Context) *redis.StatusCmd
	ConfigSet(ctx context.Context, parameter, value string) *redis.StatusCmd
	Conn() *redis.Conn
	Copy(ctx context.Context, sourceKey, destKey string, db int, replace bool) *redis.IntCmd
	DBSize(ctx context.Context) *redis.IntCmd
	DebugObject(ctx context.Context, key string) *redis.StringCmd
	Decr(ctx context.Context, key string) *redis.IntCmd
	DecrBy(ctx context.Context, key string, decrement int64) *redis.IntCmd
	Del(ctx context.Context, keys ...string) *redis.IntCmd
	Do(ctx context.Context, args ...interface{}) *redis.Cmd
	Dump(ctx context.Context, key string) *redis.StringCmd
	Echo(ctx context.Context, message interface{}) *redis.StringCmd
	Eval(ctx context.Context, script string, keys []string, args ...interface{}) *redis.Cmd
	EvalRO(ctx context.Context, script string, keys []string, args ...interface{}) *redis.Cmd
	EvalSha(ctx context.Context, sha1 string, keys []string, args ...interface{}) *redis.Cmd
	EvalShaRO(ctx context.Context, sha1 string, keys []string, args ...interface{}) *redis.Cmd
	Exists(ctx context.Context, keys ...string) *redis.IntCmd
	Expire(ctx context.Context, key string, expiration time.Duration) *redis.BoolCmd
	ExpireAt(ctx context.Context, key string, tm time.Time) *redis.BoolCmd
	ExpireGT(ctx context.Context, key string, expiration time.Duration) *redis.BoolCmd
	ExpireLT(ctx context.Context, key string, expiration time.Duration) *redis.BoolCmd
	ExpireNX(ctx context.Context, key string, expiration time.Duration) *redis.BoolCmd
	ExpireTime(ctx context.Context, key string) *redis.DurationCmd
	ExpireXX(ctx context.Context, key string, expiration time.Duration) *redis.BoolCmd
	FCall(ctx context.Context, function string, keys []string, args ...interface{}) *redis.Cmd
	FCallRO(ctx context.Context, function string, keys []string, args ...interface{}) *redis.Cmd
	FCallRo(ctx context.Context, function string, keys []string, args ...interface{}) *redis.Cmd
	FTAggregate(ctx context.Context, index string, query string) *redis.MapStringInterfaceCmd
	FTAggregateWithArgs(ctx context.Context, index string, query string, options *redis.FTAggregateOptions) *redis.AggregateCmd
	FTAliasAdd(ctx context.Context, index string, alias string) *redis.StatusCmd
	FTAliasDel(ctx context.Context, alias string) *redis.StatusCmd
	FTAliasUpdate(ctx context.Context, index string, alias string) *redis.StatusCmd
	FTAlter(ctx context.Context, index string, skipInitialScan bool, definition []interface{}) *redis.StatusCmd
	FTConfigGet(ctx context.Context, option string) *redis.MapMapStringInterfaceCmd
	FTConfigSet(ctx context.Context, option string, value interface{}) *redis.StatusCmd
	FTCreate(ctx context.Context, index string, options *redis.FTCreateOptions, schema ...*redis.FieldSchema) *redis.StatusCmd
	FTCursorDel(ctx context.Context, index string, cursorId int) *redis.StatusCmd
	FTCursorRead(ctx context.Context, index string, cursorId int, count int) *redis.MapStringInterfaceCmd
	FTDictAdd(ctx context.Context, dict string, term ...interface{}) *redis.IntCmd
	FTDictDel(ctx context.Context, dict string, term ...interface{}) *redis.IntCmd
	FTDictDump(ctx context.Context, dict string) *redis.StringSliceCmd
	FTDropIndex(ctx context.Context, index string) *redis.StatusCmd
	FTDropIndexWithArgs(ctx context.Context, index string, options *redis.FTDropIndexOptions) *redis.StatusCmd
	FTExplain(ctx context.Context, index string, query string) *redis.StringCmd
	FTExplainCli(ctx context.Context, key, path string) error
	FTExplainWithArgs(ctx context.Context, index string, query string, options *redis.FTExplainOptions) *redis.StringCmd
	FTInfo(ctx context.Context, index string) *redis.FTInfoCmd
	FTSearch(ctx context.Context, index string, query string) *redis.FTSearchCmd
	FTSearchWithArgs(ctx context.Context, index string, query string, options *redis.FTSearchOptions) *redis.FTSearchCmd
	FTSpellCheck(ctx context.Context, index string, query string) *redis.FTSpellCheckCmd
	FTSpellCheckWithArgs(ctx context.Context, index string, query string, options *redis.FTSpellCheckOptions) *redis.FTSpellCheckCmd
	FTSynDump(ctx context.Context, index string) *redis.FTSynDumpCmd
	FTSynUpdate(ctx context.Context, index string, synGroupId interface{}, terms []interface{}) *redis.StatusCmd
	FTSynUpdateWithArgs(ctx context.Context, index string, synGroupId interface{}, options *redis.FTSynUpdateOptions, terms []interface{}) *redis.StatusCmd
	FTTagVals(ctx context.Context, index string, field string) *redis.StringSliceCmd
	FT_List(ctx context.Context) *redis.StringSliceCmd
	FlushAll(ctx context.Context) *redis.StatusCmd
	FlushAllAsync(ctx context.Context) *redis.StatusCmd
	FlushDB(ctx context.Context) *redis.StatusCmd
	FlushDBAsync(ctx context.Context) *redis.StatusCmd
	FunctionDelete(ctx context.Context, libName string) *redis.StringCmd
	FunctionDump(ctx context.Context) *redis.StringCmd
	FunctionFlush(ctx context.Context) *redis.StringCmd
	FunctionFlushAsync(ctx context.Context) *redis.StringCmd
	FunctionKill(ctx context.Context) *redis.StringCmd
	FunctionList(ctx context.Context, q redis.FunctionListQuery) *redis.FunctionListCmd
	FunctionLoad(ctx context.Context, code string) *redis.StringCmd
	FunctionLoadReplace(ctx context.Context, code string) *redis.StringCmd
	FunctionRestore(ctx context.Context, libDump string) *redis.StringCmd
	FunctionStats(ctx context.Context) *redis.FunctionStatsCmd
	GeoAdd(ctx context.Context, key string, geoLocation ...*redis.GeoLocation) *redis.IntCmd
	GeoDist(ctx context.Context, key string, member1, member2, unit string) *redis.FloatCmd
	GeoHash(ctx context.Context, key string, members ...string) *redis.StringSliceCmd
	GeoPos(ctx context.Context, key string, members ...string) *redis.GeoPosCmd
	GeoRadius(ctx context.Context, key string, longitude, latitude float64, query *redis.GeoRadiusQuery) *redis.GeoLocationCmd
	GeoRadiusByMember(ctx context.Context, key, member string, query *redis.GeoRadiusQuery) *redis.GeoLocationCmd
	GeoRadiusByMemberStore(ctx context.Context, key, member string, query *redis.GeoRadiusQuery) *redis.IntCmd
	GeoRadiusStore(ctx context.Context, key string, longitude, latitude float64, query *redis.GeoRadiusQuery) *redis.IntCmd
	GeoSearch(ctx context.Context, key string, q *redis.GeoSearchQuery) *redis.StringSliceCmd
	GeoSearchLocation(ctx context.Context, key string, q *redis.GeoSearchLocationQuery) *redis.GeoSearchLocationCmd
	GeoSearchStore(ctx context.Context, key, store string, q *redis.GeoSearchStoreQuery) *redis.IntCmd
	Get(ctx context.Context, key string) *redis.StringCmd
	GetBit(ctx context.Context, key string, offset int64) *redis.IntCmd
	GetDel(ctx context.Context, key string) *redis.StringCmd
	GetEx(ctx context.Context, key string, expiration time.Duration) *redis.StringCmd
	GetRange(ctx context.Context, key string, start, end int64) *redis.StringCmd
	GetSet(ctx context.Context, key string, value interface{}) *redis.StringCmd
	HDel(ctx context.Context, key string, fields ...string) *redis.IntCmd
	HExists(ctx context.Context, key, field string) *redis.BoolCmd
	HExpire(ctx context.Context, key string, expiration time.Duration, fields ...string) *redis.IntSliceCmd
	HExpireAt(ctx context.Context, key string, tm time.Time, fields ...string) *redis.IntSliceCmd
	HExpireAtWithArgs(ctx context.Context, key string, tm time.Time, expirationArgs redis.HExpireArgs, fields ...string) *redis.IntSliceCmd
	HExpireTime(ctx context.Context, key string, fields ...string) *redis.IntSliceCmd
	HExpireWithArgs(ctx context.Context, key string, expiration time.Duration, expirationArgs redis.HExpireArgs, fields ...string) *redis.IntSliceCmd
	HGet(ctx context.Context, key, field string) *redis.StringCmd
	HGetAll(ctx context.Context, key string) *redis.MapStringStringCmd
	HIncrBy(ctx context.Context, key, field string, incr int64) *redis.IntCmd
	HIncrByFloat(ctx context.Context, key, field string, incr float64) *redis.FloatCmd
	HKeys(ctx context.Context, key string) *redis.StringSliceCmd
	HLen(ctx context.Context, key string) *redis.IntCmd
	HMGet(ctx context.Context, key string, fields ...string) *redis.SliceCmd
	HMSet(ctx context.Context, key string, values ...interface{}) *redis.BoolCmd
	HPExpire(ctx context.Context, key string, expiration time.Duration, fields ...string) *redis.IntSliceCmd
	HPExpireAt(ctx context.Context, key string, tm time.Time, fields ...string) *redis.IntSliceCmd
	HPExpireAtWithArgs(ctx context.Context, key string, tm time.Time, expirationArgs redis.HExpireArgs, fields ...string) *redis.IntSliceCmd
	HPExpireTime(ctx context.Context, key string, fields ...string) *redis.IntSliceCmd
	HPExpireWithArgs(ctx context.Context, key string, expiration time.Duration, expirationArgs redis.HExpireArgs, fields ...string) *redis.IntSliceCmd
	HPTTL(ctx context.Context, key string, fields ...string) *redis.IntSliceCmd
	HPersist(ctx context.Context, key string, fields ...string) *redis.IntSliceCmd
	HRandField(ctx context.Context, key string, count int) *redis.StringSliceCmd
	HRandFieldWithValues(ctx context.Context, key string, count int) *redis.KeyValueSliceCmd
	HScan(ctx context.Context, key string, cursor uint64, match string, count int64) *redis.ScanCmd
	HScanNoValues(ctx context.Context, key string, cursor uint64, match string, count int64) *redis.ScanCmd
	HSet(ctx context.Context, key string, values ...interface{}) *redis.IntCmd
	HSetNX(ctx context.Context, key, field string, value interface{}) *redis.BoolCmd
	HTTL(ctx context.Context, key string, fields ...string) *redis.IntSliceCmd
	HVals(ctx context.Context, key string) *redis.StringSliceCmd
	Incr(ctx context.Context, key string) *redis.IntCmd
	IncrBy(ctx context.Context, key string, value int64) *redis.IntCmd
	IncrByFloat(ctx context.Context, key string, value float64) *redis.FloatCmd
	Info(ctx context.Context, sections ...string) *redis.StringCmd
	InfoMap(ctx context.Context, sections ...string) *redis.InfoCmd
	JSONArrAppend(ctx context.Context, key, path string, values ...interface{}) *redis.IntSliceCmd
	JSONArrIndex(ctx context.Context, key, path string, value ...interface{}) *redis.IntSliceCmd
	JSONArrIndexWithArgs(ctx context.Context, key, path string, options *redis.JSONArrIndexArgs, value ...interface{}) *redis.IntSliceCmd
	JSONArrInsert(ctx context.Context, key, path string, index int64, values ...interface{}) *redis.IntSliceCmd
	JSONArrLen(ctx context.Context, key, path string) *redis.IntSliceCmd
	JSONArrPop(ctx context.Context, key, path string, index int) *redis.StringSliceCmd
	JSONArrTrim(ctx context.Context, key, path string) *redis.IntSliceCmd
	JSONArrTrimWithArgs(ctx context.Context, key, path string, options *redis.JSONArrTrimArgs) *redis.IntSliceCmd
	JSONClear(ctx context.Context, key, path string) *redis.IntCmd
	JSONDebugMemory(ctx context.Context, key, path string) *redis.IntCmd
	JSONDel(ctx context.Context, key, path string) *redis.IntCmd
	JSONForget(ctx context.Context, key, path string) *redis.IntCmd
	JSONGet(ctx context.Context, key string, paths ...string) *redis.JSONCmd
	JSONGetWithArgs(ctx context.Context, key string, options *redis.JSONGetArgs, paths ...string) *redis.JSONCmd
	JSONMGet(ctx context.Context, path string, keys ...string) *redis.JSONSliceCmd
	JSONMSet(ctx context.Context, params ...interface{}) *redis.StatusCmd
	JSONMSetArgs(ctx context.Context, docs []redis.JSONSetArgs) *redis.StatusCmd
	JSONMerge(ctx context.Context, key, path string, value string) *redis.StatusCmd
	JSONNumIncrBy(ctx context.Context, key, path string, value float64) *redis.JSONCmd
	JSONObjKeys(ctx context.Context, key, path string) *redis.SliceCmd
	JSONObjLen(ctx context.Context, key, path string) *redis.IntPointerSliceCmd
	JSONSet(ctx context.Context, key, path string, value interface{}) *redis.StatusCmd
	JSONSetMode(ctx context.Context, key, path string, value interface{}, mode string) *redis.StatusCmd
	JSONStrAppend(ctx context.Context, key, path, value string) *redis.IntPointerSliceCmd
	JSONStrLen(ctx context.Context, key, path string) *redis.IntPointerSliceCmd
	JSONToggle(ctx context.Context, key, path string) *redis.IntPointerSliceCmd
	JSONType(ctx context.Context, key, path string) *redis.JSONSliceCmd
	Keys(ctx context.Context, pattern string) *redis.StringSliceCmd
	LCS(ctx context.Context, q *redis.LCSQuery) *redis.LCSCmd
	LIndex(ctx context.Context, key string, index int64) *redis.StringCmd
	LInsert(ctx context.Context, key, op string, pivot, value interface{}) *redis.IntCmd
	LInsertAfter(ctx context.Context, key string, pivot, value interface{}) *redis.IntCmd
	LInsertBefore(ctx context.Context, key string, pivot, value interface{}) *redis.IntCmd
	LLen(ctx context.Context, key string) *redis.IntCmd
	LMPop(ctx context.Context, direction string, count int64, keys ...string) *redis.KeyValuesCmd
	LMove(ctx context.Context, source, destination, srcpos, destpos string) *redis.StringCmd
	LPop(ctx context.Context, key string) *redis.StringCmd
	LPopCount(ctx context.Context, key string, count int) *redis.StringSliceCmd
	LPos(ctx context.Context, key string, value string, a redis.LPosArgs) *redis.IntCmd
	LPosCount(ctx context.Context, key string, value string, count int64, a redis.LPosArgs) *redis.IntSliceCmd
	LPush(ctx context.Context, key string, values ...interface{}) *redis.IntCmd
	LPushX(ctx context.Context, key string, values ...interface{}) *redis.IntCmd
	LRange(ctx context.Context, key string, start, stop int64) *redis.StringSliceCmd
	LRem(ctx context.Context, key string, count int64, value interface{}) *redis.IntCmd
	LSet(ctx context.Context, key string, index int64, value interface{}) *redis.StatusCmd
	LTrim(ctx context.Context, key string, start, stop int64) *redis.StatusCmd
	LastSave(ctx context.Context) *redis.IntCmd
	MGet(ctx context.Context, keys ...string) *redis.SliceCmd
	MSet(ctx context.Context, values ...interface{}) *redis.StatusCmd
	MSetNX(ctx context.Context, values ...interface{}) *redis.BoolCmd
	MemoryUsage(ctx context.Context, key string, samples ...int) *redis.IntCmd
	Migrate(ctx context.Context, host, port, key string, db int, timeout time.Duration) *redis.StatusCmd
	ModuleLoadex(ctx context.Context, conf *redis.ModuleLoadexConfig) *redis.StringCmd
	Monitor(ctx context.Context, ch chan string) *redis.MonitorCmd
	Move(ctx context.Context, key string, db int) *redis.BoolCmd
	ObjectEncoding(ctx context.Context, key string) *redis.StringCmd
	ObjectFreq(ctx context.Context, key string) *redis.IntCmd
	ObjectIdleTime(ctx context.Context, key string) *redis.DurationCmd
	ObjectRefCount(ctx context.Context, key string) *redis.IntCmd
	Options() *redis.Options
	PExpire(ctx context.Context, key string, expiration time.Duration) *redis.BoolCmd
	PExpireAt(ctx context.Context, key string, tm time.Time) *redis.BoolCmd
	PExpireTime(ctx context.Context, key string) *redis.DurationCmd
	PFAdd(ctx context.Context, key string, els ...interface{}) *redis.IntCmd
	PFCount(ctx context.Context, keys ...string) *redis.IntCmd
	PFMerge(ctx context.Context, dest string, keys ...string) *redis.StatusCmd
	PSubscribe(ctx context.Context, channels ...string) *redis.PubSub
	PTTL(ctx context.Context, key string) *redis.DurationCmd
	Persist(ctx context.Context, key string) *redis.BoolCmd
	Ping(ctx context.Context) *redis.StatusCmd
	Pipeline() redis.Pipeliner
	Pipelined(ctx context.Context, fn func(redis.Pipeliner) error) ([]redis.Cmder, error)
	PoolStats() *redis.PoolStats
	Process(ctx context.Context, cmd redis.Cmder) error
	PubSubChannels(ctx context.Context, pattern string) *redis.StringSliceCmd
	PubSubNumPat(ctx context.Context) *redis.IntCmd
	PubSubNumSub(ctx context.Context, channels ...string) *redis.MapStringIntCmd
	PubSubShardChannels(ctx context.Context, pattern string) *redis.StringSliceCmd
	PubSubShardNumSub(ctx context.Context, channels ...string) *redis.MapStringIntCmd
	Publish(ctx context.Context, channel string, message interface{}) *redis.IntCmd
	Quit(_ context.Context) *redis.StatusCmd
	RPop(ctx context.Context, key string) *redis.StringCmd
	RPopCount(ctx context.Context, key string, count int) *redis.StringSliceCmd
	RPopLPush(ctx context.Context, source, destination string) *redis.StringCmd
	RPush(ctx context.Context, key string, values ...interface{}) *redis.IntCmd
	RPushX(ctx context.Context, key string, values ...interface{}) *redis.IntCmd
	RandomKey(ctx context.Context) *redis.StringCmd
	ReadOnly(ctx context.Context) *redis.StatusCmd
	ReadWrite(ctx context.Context) *redis.StatusCmd
	Rename(ctx context.Context, key, newkey string) *redis.StatusCmd
	RenameNX(ctx context.Context, key, newkey string) *redis.BoolCmd
	Restore(ctx context.Context, key string, ttl time.Duration, value string) *redis.StatusCmd
	RestoreReplace(ctx context.Context, key string, ttl time.Duration, value string) *redis.StatusCmd
	SAdd(ctx context.Context, key string, members ...interface{}) *redis.IntCmd
	SCard(ctx context.Context, key string) *redis.IntCmd
	SDiff(ctx context.Context, keys ...string) *redis.StringSliceCmd
	SDiffStore(ctx context.Context, destination string, keys ...string) *redis.IntCmd
	SInter(ctx context.Context, keys ...string) *redis.StringSliceCmd
	SInterCard(ctx context.Context, limit int64, keys ...string) *redis.IntCmd
	SInterStore(ctx context.Context, destination string, keys ...string) *redis.IntCmd
	SIsMember(ctx context.Context, key string, member interface{}) *redis.BoolCmd
	SMIsMember(ctx context.Context, key string, members ...interface{}) *redis.BoolSliceCmd
	SMembers(ctx context.Context, key string) *redis.StringSliceCmd
	SMembersMap(ctx context.Context, key string) *redis.StringStructMapCmd
	SMove(ctx context.Context, source, destination string, member interface{}) *redis.BoolCmd
	SPop(ctx context.Context, key string) *redis.StringCmd
	SPopN(ctx context.Context, key string, count int64) *redis.StringSliceCmd
	SPublish(ctx context.Context, channel string, message interface{}) *redis.IntCmd
	SRandMember(ctx context.Context, key string) *redis.StringCmd
	SRandMemberN(ctx context.Context, key string, count int64) *redis.StringSliceCmd
	SRem(ctx context.Context, key string, members ...interface{}) *redis.IntCmd
	SScan(ctx context.Context, key string, cursor uint64, match string, count int64) *redis.ScanCmd
	SSubscribe(ctx context.Context, channels ...string) *redis.PubSub
	SUnion(ctx context.Context, keys ...string) *redis.StringSliceCmd
	SUnionStore(ctx context.Context, destination string, keys ...string) *redis.IntCmd
	Save(ctx context.Context) *redis.StatusCmd
	Scan(ctx context.Context, cursor uint64, match string, count int64) *redis.ScanCmd
	ScanType(ctx context.Context, cursor uint64, match string, count int64, keyType string) *redis.ScanCmd
	ScriptExists(ctx context.Context, hashes ...string) *redis.BoolSliceCmd
	ScriptFlush(ctx context.Context) *redis.StatusCmd
	ScriptKill(ctx context.Context) *redis.StatusCmd
	ScriptLoad(ctx context.Context, script string) *redis.StringCmd
	Set(ctx context.Context, key string, value interface{}, expiration time.Duration) *redis.StatusCmd
	SetArgs(ctx context.Context, key string, value interface{}, a redis.SetArgs) *redis.StatusCmd
	SetBit(ctx context.Context, key string, offset int64, value int) *redis.IntCmd
	SetEx(ctx context.Context, key string, value interface{}, expiration time.Duration) *redis.StatusCmd
	SetNX(ctx context.Context, key string, value interface{}, expiration time.Duration) *redis.BoolCmd
	SetRange(ctx context.Context, key string, offset int64, value string) *redis.IntCmd
	SetXX(ctx context.Context, key string, value interface{}, expiration time.Duration) *redis.BoolCmd
	Shutdown(ctx context.Context) *redis.StatusCmd
	ShutdownNoSave(ctx context.Context) *redis.StatusCmd
	ShutdownSave(ctx context.Context) *redis.StatusCmd
	SlaveOf(ctx context.Context, host, port string) *redis.StatusCmd
	SlowLogGet(ctx context.Context, num int64) *redis.SlowLogCmd
	Sort(ctx context.Context, key string, sort *redis.Sort) *redis.StringSliceCmd
	SortInterfaces(ctx context.Context, key string, sort *redis.Sort) *redis.SliceCmd
	SortRO(ctx context.Context, key string, sort *redis.Sort) *redis.StringSliceCmd
	SortStore(ctx context.Context, key, store string, sort *redis.Sort) *redis.IntCmd
	StrLen(ctx context.Context, key string) *redis.IntCmd
	String() string
	Subscribe(ctx context.Context, channels ...string) *redis.PubSub
	Sync(_ context.Context)
	TDigestAdd(ctx context.Context, key string, elements ...float64) *redis.StatusCmd
	TDigestByRank(ctx context.Context, key string, rank ...uint64) *redis.FloatSliceCmd
	TDigestByRevRank(ctx context.Context, key string, rank ...uint64) *redis.FloatSliceCmd
	TDigestCDF(ctx context.Context, key string, elements ...float64) *redis.FloatSliceCmd
	TDigestCreate(ctx context.Context, key string) *redis.StatusCmd
	TDigestCreateWithCompression(ctx context.Context, key string, compression int64) *redis.StatusCmd
	TDigestInfo(ctx context.Context, key string) *redis.TDigestInfoCmd
	TDigestMax(ctx context.Context, key string) *redis.FloatCmd
	TDigestMerge(ctx context.Context, destKey string, options *redis.TDigestMergeOptions, sourceKeys ...string) *redis.StatusCmd
	TDigestMin(ctx context.Context, key string) *redis.FloatCmd
	TDigestQuantile(ctx context.Context, key string, elements ...float64) *redis.FloatSliceCmd
	TDigestRank(ctx context.Context, key string, values ...float64) *redis.IntSliceCmd
	TDigestReset(ctx context.Context, key string) *redis.StatusCmd
	TDigestRevRank(ctx context.Context, key string, values ...float64) *redis.IntSliceCmd
	TDigestTrimmedMean(ctx context.Context, key string, lowCutQuantile, highCutQuantile float64) *redis.FloatCmd
	TSAdd(ctx context.Context, key string, timestamp interface{}, value float64) *redis.IntCmd
	TSAddWithArgs(ctx context.Context, key string, timestamp interface{}, value float64, options *redis.TSOptions) *redis.IntCmd
	TSAlter(ctx context.Context, key string, options *redis.TSAlterOptions) *redis.StatusCmd
	TSCreate(ctx context.Context, key string) *redis.StatusCmd
	TSCreateRule(ctx context.Context, sourceKey string, destKey string, aggregator redis.Aggregator, bucketDuration int) *redis.StatusCmd
	TSCreateRuleWithArgs(ctx context.Context, sourceKey string, destKey string, aggregator redis.Aggregator, bucketDuration int, options *redis.TSCreateRuleOptions) *redis.StatusCmd
	TSCreateWithArgs(ctx context.Context, key string, options *redis.TSOptions) *redis.StatusCmd
	TSDecrBy(ctx context.Context, Key string, timestamp float64) *redis.IntCmd
	TSDecrByWithArgs(ctx context.Context, key string, timestamp float64, options *redis.TSIncrDecrOptions) *redis.IntCmd
	TSDel(ctx context.Context, Key string, fromTimestamp int, toTimestamp int) *redis.IntCmd
	TSDeleteRule(ctx context.Context, sourceKey string, destKey string) *redis.StatusCmd
	TSGet(ctx context.Context, key string) *redis.TSTimestampValueCmd
	TSGetWithArgs(ctx context.Context, key string, options *redis.TSGetOptions) *redis.TSTimestampValueCmd
	TSIncrBy(ctx context.Context, Key string, timestamp float64) *redis.IntCmd
	TSIncrByWithArgs(ctx context.Context, key string, timestamp float64, options *redis.TSIncrDecrOptions) *redis.IntCmd
	TSInfo(ctx context.Context, key string) *redis.MapStringInterfaceCmd
	TSInfoWithArgs(ctx context.Context, key string, options *redis.TSInfoOptions) *redis.MapStringInterfaceCmd
	TSMAdd(ctx context.Context, ktvSlices [][]interface{}) *redis.IntSliceCmd
	TSMGet(ctx context.Context, filters []string) *redis.MapStringSliceInterfaceCmd
	TSMGetWithArgs(ctx context.Context, filters []string, options *redis.TSMGetOptions) *redis.MapStringSliceInterfaceCmd
	TSMRange(ctx context.Context, fromTimestamp int, toTimestamp int, filterExpr []string) *redis.MapStringSliceInterfaceCmd
	TSMRangeWithArgs(ctx context.Context, fromTimestamp int, toTimestamp int, filterExpr []string, options *redis.TSMRangeOptions) *redis.MapStringSliceInterfaceCmd
	TSMRevRange(ctx context.Context, fromTimestamp int, toTimestamp int, filterExpr []string) *redis.MapStringSliceInterfaceCmd
	TSMRevRangeWithArgs(ctx context.Context, fromTimestamp int, toTimestamp int, filterExpr []string, options *redis.TSMRevRangeOptions) *redis.MapStringSliceInterfaceCmd
	TSQueryIndex(ctx context.Context, filterExpr []string) *redis.StringSliceCmd
	TSRange(ctx context.Context, key string, fromTimestamp int, toTimestamp int) *redis.TSTimestampValueSliceCmd
	TSRangeWithArgs(ctx context.Context, key string, fromTimestamp int, toTimestamp int, options *redis.TSRangeOptions) *redis.TSTimestampValueSliceCmd
	TSRevRange(ctx context.Context, key string, fromTimestamp int, toTimestamp int) *redis.TSTimestampValueSliceCmd
	TSRevRangeWithArgs(ctx context.Context, key string, fromTimestamp int, toTimestamp int, options *redis.TSRevRangeOptions) *redis.TSTimestampValueSliceCmd
	TTL(ctx context.Context, key string) *redis.DurationCmd
	Time(ctx context.Context) *redis.TimeCmd
	TopKAdd(ctx context.Context, key string, elements ...interface{}) *redis.StringSliceCmd
	TopKCount(ctx context.Context, key string, elements ...interface{}) *redis.IntSliceCmd
	TopKIncrBy(ctx context.Context, key string, elements ...interface{}) *redis.StringSliceCmd
	TopKInfo(ctx context.Context, key string) *redis.TopKInfoCmd
	TopKList(ctx context.Context, key string) *redis.StringSliceCmd
	TopKListWithCount(ctx context.Context, key string) *redis.MapStringIntCmd
	TopKQuery(ctx context.Context, key string, elements ...interface{}) *redis.BoolSliceCmd
	TopKReserve(ctx context.Context, key string, k int64) *redis.StatusCmd
	TopKReserveWithOptions(ctx context.Context, key string, k int64, width, depth int64, decay float64) *redis.StatusCmd
	Touch(ctx context.Context, keys ...string) *redis.IntCmd
	TxPipeline() redis.Pipeliner
	TxPipelined(ctx context.Context, fn func(redis.Pipeliner) error) ([]redis.Cmder, error)
	Type(ctx context.Context, key string) *redis.StatusCmd
	Unlink(ctx context.Context, keys ...string) *redis.IntCmd
	Wait(ctx context.Context, numSlaves int, timeout time.Duration) *redis.IntCmd
	WaitAOF(ctx context.Context, numLocal, numSlaves int, timeout time.Duration) *redis.IntCmd
	Watch(ctx context.Context, fn func(*redis.Tx) error, keys ...string) error
	WithTimeout(timeout time.Duration) *redis.Client
	XAck(ctx context.Context, stream, group string, ids ...string) *redis.IntCmd
	XAdd(ctx context.Context, a *redis.XAddArgs) *redis.StringCmd
	XAutoClaim(ctx context.Context, a *redis.XAutoClaimArgs) *redis.XAutoClaimCmd
	XAutoClaimJustID(ctx context.Context, a *redis.XAutoClaimArgs) *redis.XAutoClaimJustIDCmd
	XClaim(ctx context.Context, a *redis.XClaimArgs) *redis.XMessageSliceCmd
	XClaimJustID(ctx context.Context, a *redis.XClaimArgs) *redis.StringSliceCmd
	XDel(ctx context.Context, stream string, ids ...string) *redis.IntCmd
	XGroupCreate(ctx context.Context, stream, group, start string) *redis.StatusCmd
	XGroupCreateConsumer(ctx context.Context, stream, group, consumer string) *redis.IntCmd
	XGroupCreateMkStream(ctx context.Context, stream, group, start string) *redis.StatusCmd
	XGroupDelConsumer(ctx context.Context, stream, group, consumer string) *redis.IntCmd
	XGroupDestroy(ctx context.Context, stream, group string) *redis.IntCmd
	XGroupSetID(ctx context.Context, stream, group, start string) *redis.StatusCmd
	XInfoConsumers(ctx context.Context, key string, group string) *redis.XInfoConsumersCmd
	XInfoGroups(ctx context.Context, key string) *redis.XInfoGroupsCmd
	XInfoStream(ctx context.Context, key string) *redis.XInfoStreamCmd
	XInfoStreamFull(ctx context.Context, key string, count int) *redis.XInfoStreamFullCmd
	XLen(ctx context.Context, stream string) *redis.IntCmd
	XPending(ctx context.Context, stream, group string) *redis.XPendingCmd
	XPendingExt(ctx context.Context, a *redis.XPendingExtArgs) *redis.XPendingExtCmd
	XRange(ctx context.Context, stream, start, stop string) *redis.XMessageSliceCmd
	XRangeN(ctx context.Context, stream, start, stop string, count int64) *redis.XMessageSliceCmd
	XRead(ctx context.Context, a *redis.XReadArgs) *redis.XStreamSliceCmd
	XReadGroup(ctx context.Context, a *redis.XReadGroupArgs) *redis.XStreamSliceCmd
	XReadStreams(ctx context.Context, streams ...string) *redis.XStreamSliceCmd
	XRevRange(ctx context.Context, stream, start, stop string) *redis.XMessageSliceCmd
	XRevRangeN(ctx context.Context, stream, start, stop string, count int64) *redis.XMessageSliceCmd
	XTrimMaxLen(ctx context.Context, key string, maxLen int64) *redis.IntCmd
	XTrimMaxLenApprox(ctx context.Context, key string, maxLen, limit int64) *redis.IntCmd
	XTrimMinID(ctx context.Context, key string, minID string) *redis.IntCmd
	XTrimMinIDApprox(ctx context.Context, key string, minID string, limit int64) *redis.IntCmd
	ZAdd(ctx context.Context, key string, members ...redis.Z) *redis.IntCmd
	ZAddArgs(ctx context.Context, key string, args redis.ZAddArgs) *redis.IntCmd
	ZAddArgsIncr(ctx context.Context, key string, args redis.ZAddArgs) *redis.FloatCmd
	ZAddGT(ctx context.Context, key string, members ...redis.Z) *redis.IntCmd
	ZAddLT(ctx context.Context, key string, members ...redis.Z) *redis.IntCmd
	ZAddNX(ctx context.Context, key string, members ...redis.Z) *redis.IntCmd
	ZAddXX(ctx context.Context, key string, members ...redis.Z) *redis.IntCmd
	ZCard(ctx context.Context, key string) *redis.IntCmd
	ZCount(ctx context.Context, key, min, max string) *redis.IntCmd
	ZDiff(ctx context.Context, keys ...string) *redis.StringSliceCmd
	ZDiffStore(ctx context.Context, destination string, keys ...string) *redis.IntCmd
	ZDiffWithScores(ctx context.Context, keys ...string) *redis.ZSliceCmd
	ZIncrBy(ctx context.Context, key string, increment float64, member string) *redis.FloatCmd
	ZInter(ctx context.Context, store *redis.ZStore) *redis.StringSliceCmd
	ZInterCard(ctx context.Context, limit int64, keys ...string) *redis.IntCmd
	ZInterStore(ctx context.Context, destination string, store *redis.ZStore) *redis.IntCmd
	ZInterWithScores(ctx context.Context, store *redis.ZStore) *redis.ZSliceCmd
	ZLexCount(ctx context.Context, key, min, max string) *redis.IntCmd
	ZMPop(ctx context.Context, order string, count int64, keys ...string) *redis.ZSliceWithKeyCmd
	ZMScore(ctx context.Context, key string, members ...string) *redis.FloatSliceCmd
	ZPopMax(ctx context.Context, key string, count ...int64) *redis.ZSliceCmd
	ZPopMin(ctx context.Context, key string, count ...int64) *redis.ZSliceCmd
	ZRandMember(ctx context.Context, key string, count int) *redis.StringSliceCmd
	ZRandMemberWithScores(ctx context.Context, key string, count int) *redis.ZSliceCmd
	ZRange(ctx context.Context, key string, start, stop int64) *redis.StringSliceCmd
	ZRangeArgs(ctx context.Context, z redis.ZRangeArgs) *redis.StringSliceCmd
	ZRangeArgsWithScores(ctx context.Context, z redis.ZRangeArgs) *redis.ZSliceCmd
	ZRangeByLex(ctx context.Context, key string, opt *redis.ZRangeBy) *redis.StringSliceCmd
	ZRangeByScore(ctx context.Context, key string, opt *redis.ZRangeBy) *redis.StringSliceCmd
	ZRangeByScoreWithScores(ctx context.Context, key string, opt *redis.ZRangeBy) *redis.ZSliceCmd
	ZRangeStore(ctx context.Context, dst string, z redis.ZRangeArgs) *redis.IntCmd
	ZRangeWithScores(ctx context.Context, key string, start, stop int64) *redis.ZSliceCmd
	ZRank(ctx context.Context, key, member string) *redis.IntCmd
	ZRankWithScore(ctx context.Context, key, member string) *redis.RankWithScoreCmd
	ZRem(ctx context.Context, key string, members ...interface{}) *redis.IntCmd
	ZRemRangeByLex(ctx context.Context, key, min, max string) *redis.IntCmd
	ZRemRangeByRank(ctx context.Context, key string, start, stop int64) *redis.IntCmd
	ZRemRangeByScore(ctx context.Context, key, min, max string) *redis.IntCmd
	ZRevRange(ctx context.Context, key string, start, stop int64) *redis.StringSliceCmd
	ZRevRangeByLex(ctx context.Context, key string, opt *redis.ZRangeBy) *redis.StringSliceCmd
	ZRevRangeByScore(ctx context.Context, key string, opt *redis.ZRangeBy) *redis.StringSliceCmd
	ZRevRangeByScoreWithScores(ctx context.Context, key string, opt *redis.ZRangeBy) *redis.ZSliceCmd
	ZRevRangeWithScores(ctx context.Context, key string, start, stop int64) *redis.ZSliceCmd
	ZRevRank(ctx context.Context, key, member string) *redis.IntCmd
	ZRevRankWithScore(ctx context.Context, key, member string) *redis.RankWithScoreCmd
	ZScan(ctx context.Context, key string, cursor uint64, match string, count int64) *redis.ScanCmd
	ZScore(ctx context.Context, key, member string) *redis.FloatCmd
	ZUnion(ctx context.Context, store redis.ZStore) *redis.StringSliceCmd
	ZUnionStore(ctx context.Context, dest string, store *redis.ZStore) *redis.IntCmd
	ZUnionWithScores(ctx context.Context, store redis.ZStore) *redis.ZSliceCmd
}

type RedisConnectionCreator

type RedisConnectionCreator interface {
	Accept(config Bag) bool
	Create(config Bag) (RedisConnection, error)
}

type RedisConnectionFactory

type RedisConnectionFactory interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (RedisConnection, error)
	Store(id string, connection RedisConnection) error
	Remove(id string) error
	RemoveAll() error
}

type Registerer

type Registerer interface {
	Queue(constructor any, opts ...dig.ProvideOption) Registerer
	Run(container *dig.Container) error
}

func NewRegisterer

func NewRegisterer() Registerer

type RunnableProvider

type RunnableProvider interface {
	Provider

	Run(container *dig.Container) error
}

type Timer

type Timer interface {
	ParseDuration(s string) (time.Duration, error)
	Since(t time.Time) time.Duration
	Until(t time.Time) time.Duration
	FixedZone(name string, offset int) *time.Location
	LoadLocation(name string) (*time.Location, error)
	Date(year int, month time.Month, day, hour, min, sec, nsec int, loc *time.Location) time.Time
	Now() time.Time
	Parse(layout, value string) (time.Time, error)
	ParseInLocation(layout, value string, loc *time.Location) (time.Time, error)
	Unix(sec int64, nsec int64) time.Time
	UnixMicro(usec int64) time.Time
	UnixMilli(msec int64) time.Time
}

type Translator

type Translator interface {
	ut.Translator
}

type TranslatorCreator

type TranslatorCreator interface {
	Accept(config Bag) bool
	Create(config Bag) (Translator, error)
}

type TranslatorFactory

type TranslatorFactory interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (Translator, error)
	Store(id string, translator Translator) error
	Remove(id string) error
	RemoveAll() error
}

type Trigger

type Trigger interface {
	io.Closer

	IsRunning() bool
	Delay() time.Duration
}

type TriggerCallback

type TriggerCallback func() error

type TriggerFactory

type TriggerFactory interface {
	NewPulse(delay time.Duration, callback TriggerCallback) (Trigger, error)
	NewRecurring(delay time.Duration, callback TriggerCallback) (Trigger, error)
}

type ValidationError

type ValidationError struct {
	ParamId      int
	ParamName    string
	ErrorId      int
	ErrorMessage string
}

type Validator

type Validator interface {
	Validate(value any) any
}

type ValidatorCreator

type ValidatorCreator interface {
	Accept(config Bag) bool
	Create(config Bag) (Validator, error)
}

type ValidatorErrorConverter

type ValidatorErrorConverter interface {
	Convert(errors []ValidationError) any
}

type ValidatorErrorConverterCreator

type ValidatorErrorConverterCreator interface {
	Accept(config Bag) bool
	Create(config Bag) (ValidatorErrorConverter, error)
}

type ValidatorErrorConverterFactory

type ValidatorErrorConverterFactory interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (ValidatorErrorConverter, error)
	Store(id string, converter ValidatorErrorConverter) error
	Remove(id string) error
	RemoveAll() error
}

type ValidatorFactory

type ValidatorFactory interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (Validator, error)
	Store(id string, validator Validator) error
	Remove(id string) error
	RemoveAll() error
}

type ValidatorParser

type ValidatorParser interface {
	AddTagCode(tag string, code int)
	Parse(value any, errs validator.ValidationErrors) []ValidationError
}

type ValidatorParserCreator

type ValidatorParserCreator interface {
	Accept(config Bag) bool
	Create(config Bag) (ValidatorParser, error)
}

type ValidatorParserFactory

type ValidatorParserFactory interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (ValidatorParser, error)
	Store(id string, parser ValidatorParser) error
	Remove(id string) error
	RemoveAll() error
}

type WatchdogLogger

type WatchdogLogger interface {
	LogStart(id string)
	LogError(id string, e error)
	LogDone(id string)
}

type WatchdogLoggerCreator

type WatchdogLoggerCreator interface {
	Accept(config Bag) bool
	Create(config Bag) (WatchdogLogger, error)
}

type WatchdogLoggerFactory

type WatchdogLoggerFactory interface {
	io.Closer

	Available() []string
	Stored() []string
	Has(id string) bool
	Get(id string) (WatchdogLogger, error)
	Store(id string, logger WatchdogLogger) error
	Remove(id string) error
	RemoveAll() error
}

Source Files

Directories

Path Synopsis
tests
mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.

Jump to

Keyboard shortcuts

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