activerecord

package
v1.9.5 Latest Latest
Warning

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

Go to latest
Published: Oct 5, 2023 License: MIT Imports: 11 Imported by: 8

Documentation

Index

Constants

View Source
const (
	PanicLoggerLevel uint32 = iota
	FatalLoggerLevel
	ErrorLoggerLevel
	WarnLoggerLevel
	InfoLoggerLevel
	DebugLoggerLevel
	TraceLoggerLevel
)
View Source
const (
	ContextLogprefix ctxKey = iota
)
View Source
const (
	ValueContextErrorField = "context"
)

Variables

View Source
var ErrNoData = errors.New("no data")

Functions

func InitActiveRecord

func InitActiveRecord(opts ...Option)

func ReinitActiveRecord

func ReinitActiveRecord(opts ...Option)

func WithShard

func WithShard(masters []OptionInterface, replicas []OptionInterface) clusterOption

Types

type ActiveRecord

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

func GetInstance

func GetInstance() *ActiveRecord

type Cluster

type Cluster []Shard

Тип описывающий кластер. Сейчас кластер - это набор шардов.

func GetClusterInfoFromCfg

func GetClusterInfoFromCfg(ctx context.Context, path string, globs MapGlobParam, optionCreator func(ShardInstanceConfig) (OptionInterface, error)) (Cluster, error)

Констркуктор позволяющий проинициализировать кластер их конфигурации. На вход передаётся путь в конфиге, значения по умолчанию, и ссылка на функцию, которая создаёт структуру опций и считает контрольную сумму, для того, что бы следить за их изменением в онлайне.

func NewClusterInfo

func NewClusterInfo(opts ...clusterOption) Cluster

Конструктор который позволяет проинициализировать новый кластер. В опциях передаются все шарды, сколько шардов, столько и опций. Используется в случаях, когда информация по кластеру прописана непосредственно в декларации модели, а не в конфиге. Так же используется при тестировании.

type ConfigCacherInterface

type ConfigCacherInterface interface {
	Get(ctx context.Context, path string, glob MapGlobParam, optionCreator func(ShardInstanceConfig) (OptionInterface, error)) (Cluster, error)
}

func ConfigCacher

func ConfigCacher() ConfigCacherInterface

type ConfigInterface

type ConfigInterface interface {
	GetBool(ctx context.Context, confPath string, dfl ...bool) bool
	GetBoolIfExists(ctx context.Context, confPath string) (value bool, ok bool)
	GetInt(ctx context.Context, confPath string, dfl ...int) int
	GetIntIfExists(ctx context.Context, confPath string) (int, bool)
	GetDuration(ctx context.Context, confPath string, dfl ...time.Duration) time.Duration
	GetDurationIfExists(ctx context.Context, confPath string) (time.Duration, bool)
	GetString(ctx context.Context, confPath string, dfl ...string) string
	GetStringIfExists(ctx context.Context, confPath string) (string, bool)
	GetStrings(ctx context.Context, confPath string, dfl []string) []string
	GetStruct(ctx context.Context, confPath string, valuePtr interface{}) (bool, error)
	GetLastUpdateTime() time.Time
}

func Config

func Config() ConfigInterface

type ConnectionCacherInterface

type ConnectionCacherInterface interface {
	Add(shard ShardInstance, connector func(interface{}) (ConnectionInterface, error)) (ConnectionInterface, error)
	GetOrAdd(shard ShardInstance, connector func(interface{}) (ConnectionInterface, error)) (ConnectionInterface, error)
	Get(shard ShardInstance) ConnectionInterface
	CloseConnection(context.Context)
}

func ConnectionCacher

func ConnectionCacher() ConnectionCacherInterface

type ConnectionInterface

type ConnectionInterface interface {
	Close()
	Done() <-chan struct{}
}

type DefaultConfig

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

func NewDefaultConfig

func NewDefaultConfig() *DefaultConfig

func NewDefaultConfigFromMap

func NewDefaultConfigFromMap(cfg map[string]interface{}) *DefaultConfig

func (*DefaultConfig) GetBool

func (dc *DefaultConfig) GetBool(ctx context.Context, confPath string, dfl ...bool) bool

func (*DefaultConfig) GetBoolIfExists

func (dc *DefaultConfig) GetBoolIfExists(ctx context.Context, confPath string) (value bool, ok bool)

func (*DefaultConfig) GetDuration

func (dc *DefaultConfig) GetDuration(ctx context.Context, confPath string, dfl ...time.Duration) time.Duration

func (*DefaultConfig) GetDurationIfExists

func (dc *DefaultConfig) GetDurationIfExists(ctx context.Context, confPath string) (time.Duration, bool)

func (*DefaultConfig) GetInt

func (dc *DefaultConfig) GetInt(ctx context.Context, confPath string, dfl ...int) int

func (*DefaultConfig) GetIntIfExists

func (dc *DefaultConfig) GetIntIfExists(ctx context.Context, confPath string) (int, bool)

func (*DefaultConfig) GetLastUpdateTime

func (dc *DefaultConfig) GetLastUpdateTime() time.Time

func (*DefaultConfig) GetString

func (dc *DefaultConfig) GetString(ctx context.Context, confPath string, dfl ...string) string

func (*DefaultConfig) GetStringIfExists

func (dc *DefaultConfig) GetStringIfExists(ctx context.Context, confPath string) (string, bool)

func (*DefaultConfig) GetStrings

func (dc *DefaultConfig) GetStrings(ctx context.Context, confPath string, dfl []string) []string

func (*DefaultConfig) GetStruct

func (dc *DefaultConfig) GetStruct(ctx context.Context, confPath string, valuePtr interface{}) (bool, error)

type DefaultConfigCacher

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

Структура для кеширования полученных конфигураций. Инвалидация происходит посредством сравнения updateTime сданной труктуры и самого конфига. Используется для шаринга конфигов между можелями если они используют одну и ту же конфигурацию для подключений

func (*DefaultConfigCacher) Get

func (cc *DefaultConfigCacher) Get(ctx context.Context, path string, globs MapGlobParam, optionCreator func(ShardInstanceConfig) (OptionInterface, error)) (Cluster, error)

Получение конфигурации. Если есть в кеше и он еще валидный, то конфигурация берётся из кешаб если в кеше нет, то достаём из конфига и кешируем.

type DefaultLogger

type DefaultLogger struct {
	Fields ValueLogPrefix
	// contains filtered or unexported fields
}

func NewLogger

func NewLogger() *DefaultLogger

func (*DefaultLogger) CollectQueries

func (l *DefaultLogger) CollectQueries(ctx context.Context, f func() (MockerLogger, error))

func (*DefaultLogger) Debug

func (l *DefaultLogger) Debug(ctx context.Context, args ...interface{})

func (*DefaultLogger) Error

func (l *DefaultLogger) Error(ctx context.Context, args ...interface{})

func (*DefaultLogger) Fatal

func (l *DefaultLogger) Fatal(ctx context.Context, args ...interface{})

func (*DefaultLogger) Info

func (l *DefaultLogger) Info(ctx context.Context, args ...interface{})

func (*DefaultLogger) Panic

func (l *DefaultLogger) Panic(ctx context.Context, args ...interface{})

func (*DefaultLogger) SetLogLevel

func (l *DefaultLogger) SetLogLevel(level uint32)

func (*DefaultLogger) SetLoggerValueToContext

func (l *DefaultLogger) SetLoggerValueToContext(ctx context.Context, val ValueLogPrefix) context.Context

func (*DefaultLogger) Trace

func (l *DefaultLogger) Trace(ctx context.Context, args ...interface{})

func (*DefaultLogger) Warn

func (l *DefaultLogger) Warn(ctx context.Context, args ...interface{})

type DefaultNoopMetric

type DefaultNoopMetric struct{}

func NewDefaultNoopMetric

func NewDefaultNoopMetric() *DefaultNoopMetric

func (*DefaultNoopMetric) ErrorCount

func (*DefaultNoopMetric) ErrorCount(storage, entity string) MetricStatCountInterface

func (*DefaultNoopMetric) StatCount

func (*DefaultNoopMetric) StatCount(storage, entity string) MetricStatCountInterface

func (*DefaultNoopMetric) Timer

func (*DefaultNoopMetric) Timer(storage, entity string) MetricTimerInterface

type DefaultNoopMetricCount

type DefaultNoopMetricCount struct{}

func (*DefaultNoopMetricCount) Inc

func (*DefaultNoopMetricCount) Inc(ctx context.Context, name string, val float64)

type DefaultNoopMetricTimer

type DefaultNoopMetricTimer struct{}

func (*DefaultNoopMetricTimer) Finish

func (*DefaultNoopMetricTimer) Finish(ctx context.Context, name string)

func (*DefaultNoopMetricTimer) Timing

func (*DefaultNoopMetricTimer) Timing(ctx context.Context, name string)

type IprotoLogger

type IprotoLogger struct{}

func (IprotoLogger) Debugf

func (IprotoLogger) Debugf(ctx context.Context, fmtStr string, v ...interface{})

func (IprotoLogger) Printf

func (IprotoLogger) Printf(ctx context.Context, fmtStr string, v ...interface{})

type Limiter

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

func EmptyLimiter

func EmptyLimiter() Limiter

func NewLimitOffset

func NewLimitOffset(limit uint32, offset uint32) Limiter

func NewLimiter

func NewLimiter(limit uint32) Limiter

func NewThreshold

func NewThreshold(limit uint32) Limiter

func (Limiter) FullfillWarn

func (l Limiter) FullfillWarn() bool

func (Limiter) Limit

func (l Limiter) Limit() uint32

func (Limiter) Offset

func (l Limiter) Offset() uint32

func (Limiter) String

func (l Limiter) String() string

type LoggerInterface

type LoggerInterface interface {
	SetLoggerValueToContext(ctx context.Context, addVal ValueLogPrefix) context.Context

	SetLogLevel(level uint32)
	Fatal(ctx context.Context, args ...interface{})
	Error(ctx context.Context, args ...interface{})
	Warn(ctx context.Context, args ...interface{})
	Info(ctx context.Context, args ...interface{})
	Debug(ctx context.Context, args ...interface{})
	Trace(ctx context.Context, args ...interface{})

	CollectQueries(ctx context.Context, f func() (MockerLogger, error))
}

func Logger

func Logger() LoggerInterface

type MapGlobParam

type MapGlobParam struct {
	Timeout  time.Duration
	PoolSize int
}

Тип используемый для передачи набора значений по умолчанию для параметров

type MetricErrorCountInterface

type MetricErrorCountInterface interface {
	Inc(ctx context.Context, name string, val float64)
}

type MetricInterface

type MetricInterface interface {
	StatCount(storage, entity string) MetricStatCountInterface
	ErrorCount(storage, entity string) MetricStatCountInterface
	Timer(storage, entity string) MetricTimerInterface
}

func Metric

func Metric() MetricInterface

type MetricStatCountInterface

type MetricStatCountInterface interface {
	Inc(ctx context.Context, name string, val float64)
}

type MetricTimerInterface

type MetricTimerInterface interface {
	Timing(ctx context.Context, name string)
	Finish(ctx context.Context, name string)
}

type MockerLogger

type MockerLogger struct {
	// Название моккера
	MockerName string

	// Вызовы моккера для создания списка моков
	Mockers string

	// Получение списка фикстур для моков
	FixturesSelector string

	// Название пакета для которого необходимо добавить моки
	ResultName string

	// Результат возвращаемый селектором
	Results any
}

Структура используемая для сбора статистики по запросам

type Option

type Option interface {
	// contains filtered or unexported methods
}

func WithConfig

func WithConfig(config ConfigInterface) Option

func WithLogger

func WithLogger(logger LoggerInterface) Option

func WithMetrics

func WithMetrics(metric MetricInterface) Option

type OptionInterface

type OptionInterface interface {
	GetConnectionID() string
	InstanceMode() any
}

Интерфейс которому должен соответствовать билдер опций подключения к конретному инстансу

type SelectorLimiter

type SelectorLimiter interface {
	Limit() uint32
	Offset() uint32
	FullfillWarn() bool
	fmt.Stringer
}

type SerializerInterface

type SerializerInterface interface {
	Unmarshal(val interface{}) (interface{}, error)
	Marshal(data interface{}) (interface{}, error)
}

type ServerModeType

type ServerModeType uint8

Тип и константы для определения режима работы конкретного инстанса.

const (
	ModeMaster ServerModeType = iota
	ModeReplica
)

type Shard

type Shard struct {
	Masters  []ShardInstance
	Replicas []ShardInstance
	// contains filtered or unexported fields
}

Структура описывающая конкретный шард. Каждый шард может состоять из набора мастеров и реплик

func (*Shard) NextMaster

func (s *Shard) NextMaster() ShardInstance

Функция выбирающая следующий инстанс мастера в конкретном шарде

func (*Shard) NextReplica

func (s *Shard) NextReplica() ShardInstance

Инстанс выбирающий конкретный инстанс реплики в конкретном шарде

type ShardInstance

type ShardInstance struct {
	ParamsID string
	Config   ShardInstanceConfig
	Options  interface{}
}

Структура описывающая инстанс в кластере

type ShardInstanceConfig

type ShardInstanceConfig struct {
	Timeout  time.Duration
	Mode     ServerModeType
	PoolSize int
	Addr     string
}

Структура используется для описания конфигурации конктретного инстанса

type ShardInstanceType

type ShardInstanceType uint8

Тип и константы для выбора инстанса в шарде

const (
	MasterInstanceType          ShardInstanceType = iota // Любой из описанных мастеров. По умолчанию используется для rw запросов
	ReplicaInstanceType                                  // Любой из описанных реплик
	ReplicaOrMasterInstanceType                          // Любая реплика если есть, если нет то любой мастер. По умолчанию используется при селекте
)

type ValueLogPrefix

type ValueLogPrefix map[string]interface{}

Jump to

Keyboard shortcuts

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