Documentation
¶
Index ¶
- Constants
- Variables
- func HashValues(values ...interface{}) string
- func SetConfigDefaults(db *sql.DB, config *DBConfig)
- func SetDBDefaults(db *sql.DB)
- func ToKey(stmt string, values ...interface{}) string
- func ToPtr[E any](e E) *E
- type Balancer
- type DBConfig
- type DataBaseOpts
- type Database
- func (d *Database) Exec(stmt string, values ...interface{}) (sql.Result, error)
- func (d *Database) ExecContext(ctx context.Context, stmt string, values ...interface{}) (sql.Result, error)
- func (d *Database) Query(stmt string, values ...interface{}) (Rows, error)
- func (d *Database) QueryContext(ctx context.Context, stmt string, values ...interface{}) (Rows, error)
- func (d *Database) QueryRow(stmt string, values ...interface{}) (*Row, error)
- func (d *Database) QueryRowContext(ctx context.Context, stmt string, values ...interface{}) (*Row, error)
- func (d *Database) WithMode(dbMode DbActionMode) *Database
- type DbActionMode
- type KoalesceEvictor
- type NoopEvictor
- type QueryKoalescer
- func (ko *QueryKoalescer) DoChan(query string, fn func() (interface{}, error)) <-chan singleflight.Result
- func (ko *QueryKoalescer) DoWithContext(ctx context.Context, query string, fn func() (interface{}, error)) <-chan singleflight.Result
- func (ko *QueryKoalescer) Evict(query string) bool
- func (ko *QueryKoalescer) Forget(query string) error
- func (ko *QueryKoalescer) ForgetWithContext(ctx context.Context, query string) error
- type RandomBalancer
- type ResolverDB
- type RoundRobalancer
- type Row
- type Rows
- type TimeEvictor
Constants ¶
View Source
const ( DEFAULT_MAX_IDLE_CONNECTIONS = 30 DEFAULT_CONN_MAX_LIFETIME = 10 * time.Minute DEFAULT_MAX_OPEN_CONNECTIONS = 10 )
Variables ¶
View Source
var ( ErrKoalesceTimeout = errors.New("timeout") ErrKoalesceCancelled = errors.New("cancelled") )
View Source
var ( EventBeforeDBSelect string = "before::select_db" EventAfterDBSelect string = "after:select_db" EventBeforeQueryRun string = "before::query_run" )
View Source
var ( ErrorInvalidDBMode = errors.New("db mode invalid for query") ErrorInvalidData = errors.New("unexpected result type from query koalescer") )
Functions ¶
func HashValues ¶
func HashValues(values ...interface{}) string
func SetConfigDefaults ¶
func SetDBDefaults ¶
Types ¶
type DBConfig ¶
type DBConfig struct { Master *ResolverDB Replicas []*ResolverDB Policy Balancer DefaultMode *DbActionMode MaxIdleConnections *int MaxOpenConnections *int ConnectionMaxLifetime *time.Duration }
type DataBaseOpts ¶
type DataBaseOpts func(d *Database)
func WithHooks ¶
func WithHooks(eventHandler hooks.EventEmitter) DataBaseOpts
func WithQueryQualescer ¶
func WithQueryQualescer(koalescer *QueryKoalescer) DataBaseOpts
type Database ¶
type Database struct { Config DBConfig Hooks hooks.EventEmitter // contains filtered or unexported fields }
func Register ¶
func Register(config DBConfig, opts ...DataBaseOpts) *Database
func (*Database) ExecContext ¶
func (*Database) QueryContext ¶
func (*Database) QueryRowContext ¶
func (*Database) WithMode ¶
func (d *Database) WithMode(dbMode DbActionMode) *Database
type DbActionMode ¶
type DbActionMode string
var ( DbWriteMode DbActionMode = "write" DbReadMode DbActionMode = "read" )
type KoalesceEvictor ¶
type KoalesceEvictor interface {
HasEvicted() bool
}
type NoopEvictor ¶
type NoopEvictor struct{}
func (*NoopEvictor) HasEvicted ¶
func (*NoopEvictor) HasEvicted() bool
type QueryKoalescer ¶
type QueryKoalescer struct {
// contains filtered or unexported fields
}
func NewKoalescer ¶
func NewKoalescer(evictor KoalesceEvictor) *QueryKoalescer
func (*QueryKoalescer) DoChan ¶
func (ko *QueryKoalescer) DoChan(query string, fn func() (interface{}, error)) <-chan singleflight.Result
func (*QueryKoalescer) DoWithContext ¶
func (ko *QueryKoalescer) DoWithContext(ctx context.Context, query string, fn func() (interface{}, error)) <-chan singleflight.Result
func (*QueryKoalescer) Evict ¶
func (ko *QueryKoalescer) Evict(query string) bool
func (*QueryKoalescer) Forget ¶
func (ko *QueryKoalescer) Forget(query string) error
func (*QueryKoalescer) ForgetWithContext ¶
func (ko *QueryKoalescer) ForgetWithContext(ctx context.Context, query string) error
type RandomBalancer ¶
type RandomBalancer struct {
// contains filtered or unexported fields
}
func NewRandomBalancer ¶
func NewRandomBalancer(resourceCount int) *RandomBalancer
func (*RandomBalancer) Get ¶
func (r *RandomBalancer) Get() int64
type ResolverDB ¶
type ResolverDB struct { *sql.DB Name string IsMaster bool InSync bool // contains filtered or unexported fields }
func AsSyncReplica ¶
func AsSyncReplica(db *sql.DB, name string) *ResolverDB
func NewResolveDB ¶
func NewResolveDB(db *sql.DB, name string, isMaster, inSync bool) *ResolverDB
func (*ResolverDB) CheckHealth ¶
func (rd *ResolverDB) CheckHealth(ctx context.Context) error
func (*ResolverDB) UnWrap ¶
func (rd *ResolverDB) UnWrap() *sql.DB
type RoundRobalancer ¶
type RoundRobalancer struct {
// contains filtered or unexported fields
}
func NewRoundRobalancer ¶
func NewRoundRobalancer(resourceCount int) *RoundRobalancer
func (*RoundRobalancer) Get ¶
func (r *RoundRobalancer) Get() int64
type TimeEvictor ¶
type TimeEvictor struct {
// contains filtered or unexported fields
}
func NewTimeEvictor ¶
func NewTimeEvictor(duration time.Duration) *TimeEvictor
func (*TimeEvictor) HasEvicted ¶
func (t *TimeEvictor) HasEvicted() bool
Click to show internal directories.
Click to hide internal directories.