Documentation
¶
Index ¶
- Constants
- Variables
- func AddDriverFactory(name string, factory DriverFactory)
- func AddMigrationProvider(name string, provider MigrationProvider)
- func CheckBadConnection(result any, err error) exec.ErrorType
- func CheckDeadlock(result any, err error) exec.ErrorType
- func CheckInvalidConnection(result any, err error) exec.ErrorType
- func CheckIoTimeout(result any, err error) exec.ErrorType
- func ExecutorBackoffType(name string) string
- func IsDuplicateEntryError(err error) bool
- func MysqlPlainFixtureSetFactory[T any](metadata *MysqlPlainMetaData, data fixtures.NamedFixtures[T], ...) fixtures.FixtureSetFactory
- func MysqlSqlxFixtureSetFactory[T any](metadata *MysqlSqlxMetaData, data fixtures.NamedFixtures[T], ...) fixtures.FixtureSetFactory
- func NewConnection(ctx context.Context, config cfg.Config, logger log.Logger, name string) (*sqlx.DB, error)
- func NewConnectionFromSettings(ctx context.Context, logger log.Logger, name string, settings *Settings) (*sqlx.DB, error)
- func NewConnectionWithInterfaces(logger log.Logger, settings *Settings) (*sqlx.DB, error)
- func NewDataImporter(ctx context.Context, config cfg.Config, logger log.Logger, name string) (*dataImporter, error)
- func NewExecutor(config cfg.Config, logger log.Logger, name string, backoffType string, ...) exec.Executor
- func NewExecutorWithChecker(config cfg.Config, logger log.Logger, name string, backoffType string, ...) exec.Executor
- func NewLifecycleManager(name string, settings *Settings) reslife.LifeCycleerFactory
- func NewMysqlPlainFixtureWriter(ctx context.Context, config cfg.Config, logger log.Logger, ...) (fixtures.FixtureWriter, error)
- func NewMysqlPlainFixtureWriterWithInterfaces(logger log.Logger, client Client, metadata *MysqlPlainMetaData) fixtures.FixtureWriter
- func NewMysqlSqlxFixtureWriter(ctx context.Context, config cfg.Config, logger log.Logger, ...) (fixtures.FixtureWriter, error)
- func NewMysqlSqlxFixtureWriterWithInterfaces(logger log.Logger, client Client, metadata *MysqlSqlxMetaData) fixtures.FixtureWriter
- func ProvideConnection(ctx context.Context, config cfg.Config, logger log.Logger, name string) (*sqlx.DB, error)
- func ProvideConnectionFromSettings(ctx context.Context, logger log.Logger, name string, settings *Settings) (*sqlx.DB, error)
- type Client
- type ClientOption
- type ClientSqlx
- func NewClient(ctx context.Context, config cfg.Config, logger log.Logger, name string, ...) (*ClientSqlx, error)
- func NewClientWithInterfaces(logger log.Logger, connection *sqlx.DB, executor exec.Executor) *ClientSqlx
- func NewClientWithSettings(ctx context.Context, config cfg.Config, logger log.Logger, name string, ...) (*ClientSqlx, error)
- func ProvideClient(ctx context.Context, config cfg.Config, logger log.Logger, name string, ...) (*ClientSqlx, error)
- func (c *ClientSqlx) BeginTx(ctx context.Context, ops *sql.TxOptions) (*sqlx.Tx, error)
- func (c *ClientSqlx) BindNamed(query string, arg any) (qry string, args []any, err error)
- func (c *ClientSqlx) Close() error
- func (c *ClientSqlx) Exec(ctx context.Context, query string, args ...any) (sql.Result, error)
- func (c *ClientSqlx) ExecMultiInTx(ctx context.Context, sqlers ...Sqler) (results []sql.Result, err error)
- func (c *ClientSqlx) Get(ctx context.Context, dest any, query string, args ...any) error
- func (c *ClientSqlx) GetResult(ctx context.Context, query string, args ...any) (result *Result, err error)
- func (c *ClientSqlx) GetSingleScalarValue(ctx context.Context, query string, args ...any) (int, error)
- func (c *ClientSqlx) NamedExec(ctx context.Context, query string, arg any) (sql.Result, error)
- func (c *ClientSqlx) NamedQuery(ctx context.Context, query string, arg any) (*sqlx.Rows, error)
- func (c *ClientSqlx) NamedSelect(ctx context.Context, dest any, query string, arg any) error
- func (c *ClientSqlx) Prepare(ctx context.Context, query string) (*sql.Stmt, error)
- func (c *ClientSqlx) PrepareNamed(ctx context.Context, query string) (*sqlx.NamedStmt, error)
- func (c *ClientSqlx) Preparex(ctx context.Context, query string) (*sqlx.Stmt, error)
- func (c *ClientSqlx) Query(ctx context.Context, query string, args ...any) (*sql.Rows, error)
- func (c *ClientSqlx) QueryRow(ctx context.Context, query string, args ...any) *sql.Row
- func (c *ClientSqlx) Queryx(ctx context.Context, query string, args ...any) (*sqlx.Rows, error)
- func (c *ClientSqlx) Select(ctx context.Context, dest any, query string, args ...any) error
- func (c *ClientSqlx) WithTx(ctx context.Context, ops *sql.TxOptions, ...) error
- type DataExporter
- type DataImporter
- type DatabaseData
- type Driver
- type DriverFactory
- type DuplicateEntryError
- type IsNullable
- type JSON
- type LifeCyclePurger
- type LifecycleManager
- type Metadata
- type MigrationProvider
- type MigrationSettings
- type MysqlPlainFixtureValues
- type MysqlPlainMetaData
- type MysqlSqlxMetaData
- type NonNullable
- type Nullable
- type QueryBuilder
- type RawQueryBuilder
- func (b *RawQueryBuilder) GroupBy(field ...string) QueryBuilder
- func (b *RawQueryBuilder) Joins(joins []string) QueryBuilder
- func (b *RawQueryBuilder) OrderBy(field string, direction string) QueryBuilder
- func (b *RawQueryBuilder) Page(offset int, size int) QueryBuilder
- func (b *RawQueryBuilder) Table(table string) QueryBuilder
- func (b *RawQueryBuilder) Where(query interface{}, args ...interface{}) QueryBuilder
- type Result
- type ResultRow
- type Settings
- type SettingsRetry
- type SettingsTimeout
- type SettingsUri
- type SqlResult
- type Sqler
- type TableData
Constants ¶
View Source
const DriverMysql = "mysql"
View Source
const DriverNameCrateDb = "cratedb"
View Source
const DriverNameRedshift = "redshift"
View Source
const (
FormatDateTime = "2006-01-02 15:04:05"
)
View Source
const MetadataKey = "db.connections"
Variables ¶
View Source
var ( ErrJSONInvalidType = errors.New("incoming data type is not []byte for json") NullableBehaviour = Nullable{} NonNullableBehaviour = NonNullable{} )
Functions ¶
func AddDriverFactory ¶ added in v0.27.0
func AddDriverFactory(name string, factory DriverFactory)
func AddMigrationProvider ¶ added in v0.18.0
func AddMigrationProvider(name string, provider MigrationProvider)
func CheckBadConnection ¶ added in v0.20.0
func CheckInvalidConnection ¶ added in v0.20.0
func ExecutorBackoffType ¶ added in v0.38.1
func IsDuplicateEntryError ¶
func MysqlPlainFixtureSetFactory ¶ added in v0.37.0
func MysqlPlainFixtureSetFactory[T any](metadata *MysqlPlainMetaData, data fixtures.NamedFixtures[T], options ...fixtures.FixtureSetOption) fixtures.FixtureSetFactory
func MysqlSqlxFixtureSetFactory ¶ added in v0.37.0
func MysqlSqlxFixtureSetFactory[T any](metadata *MysqlSqlxMetaData, data fixtures.NamedFixtures[T], options ...fixtures.FixtureSetOption) fixtures.FixtureSetFactory
func NewConnection ¶ added in v0.20.0
func NewDataImporter ¶ added in v0.36.1
func NewExecutor ¶ added in v0.20.0
func NewExecutorWithChecker ¶ added in v0.38.1
func NewLifecycleManager ¶ added in v0.37.0
func NewLifecycleManager(name string, settings *Settings) reslife.LifeCycleerFactory
func NewMysqlPlainFixtureWriter ¶ added in v0.37.0
func NewMysqlPlainFixtureWriter(ctx context.Context, config cfg.Config, logger log.Logger, metadata *MysqlPlainMetaData) (fixtures.FixtureWriter, error)
func NewMysqlPlainFixtureWriterWithInterfaces ¶ added in v0.37.0
func NewMysqlPlainFixtureWriterWithInterfaces(logger log.Logger, client Client, metadata *MysqlPlainMetaData) fixtures.FixtureWriter
func NewMysqlSqlxFixtureWriter ¶ added in v0.37.0
func NewMysqlSqlxFixtureWriter(ctx context.Context, config cfg.Config, logger log.Logger, metadata *MysqlSqlxMetaData) (fixtures.FixtureWriter, error)
func NewMysqlSqlxFixtureWriterWithInterfaces ¶ added in v0.37.0
func NewMysqlSqlxFixtureWriterWithInterfaces(logger log.Logger, client Client, metadata *MysqlSqlxMetaData) fixtures.FixtureWriter
func ProvideConnection ¶
Types ¶
type Client ¶
type Client interface {
GetSingleScalarValue(ctx context.Context, query string, args ...any) (int, error)
GetResult(ctx context.Context, query string, args ...any) (*Result, error)
Exec(ctx context.Context, query string, args ...any) (sql.Result, error)
NamedExec(ctx context.Context, query string, arg any) (sql.Result, error)
ExecMultiInTx(ctx context.Context, sqlers ...Sqler) (results []sql.Result, err error)
BindNamed(query string, arg any) (string, []any, error)
Prepare(ctx context.Context, query string) (*sql.Stmt, error)
Preparex(ctx context.Context, query string) (*sqlx.Stmt, error)
PrepareNamed(ctx context.Context, query string) (*sqlx.NamedStmt, error)
Query(ctx context.Context, query string, args ...any) (*sql.Rows, error)
Queryx(ctx context.Context, query string, args ...any) (*sqlx.Rows, error)
QueryRow(ctx context.Context, query string, args ...any) *sql.Row
NamedQuery(ctx context.Context, query string, arg any) (*sqlx.Rows, error)
Select(ctx context.Context, dest any, query string, args ...any) error
NamedSelect(ctx context.Context, dest any, query string, arg any) error
Get(ctx context.Context, dest any, query string, args ...any) error
WithTx(ctx context.Context, ops *sql.TxOptions, do func(ctx context.Context, tx *sqlx.Tx) error) error
Close() error
}
type ClientOption ¶ added in v0.38.1
type ClientOption func(*ClientSqlx)
func ClientWithExecutor ¶ added in v0.38.1
func ClientWithExecutor(executor exec.Executor) ClientOption
type ClientSqlx ¶
type ClientSqlx struct {
// contains filtered or unexported fields
}
func NewClient ¶
func NewClient(ctx context.Context, config cfg.Config, logger log.Logger, name string, options ...ClientOption) (*ClientSqlx, error)
func NewClientWithInterfaces ¶
func NewClientWithSettings ¶
func ProvideClient ¶ added in v0.20.0
func ProvideClient(ctx context.Context, config cfg.Config, logger log.Logger, name string, options ...ClientOption) (*ClientSqlx, error)
ProvideClient provides a client from context.. Applies the options on creation of a new client if none is registered in the context yet for the name. When requesting a client with the same name but different options the options will not be applied but the already registered client will be returned.
func (*ClientSqlx) Close ¶ added in v0.36.1
func (c *ClientSqlx) Close() error
func (*ClientSqlx) ExecMultiInTx ¶ added in v0.19.4
func (*ClientSqlx) GetSingleScalarValue ¶
func (*ClientSqlx) NamedQuery ¶ added in v0.20.1
func (*ClientSqlx) NamedSelect ¶ added in v0.20.1
func (*ClientSqlx) PrepareNamed ¶ added in v0.20.1
type DataExporter ¶ added in v0.36.1
type DataExporter interface {
ExportAllTables(ctx context.Context, dbName string) (DatabaseData, error)
ExportTable(ctx context.Context, dbName string, tableName string) ([]map[string]any, error)
Close() error
}
func NewDataExporter ¶ added in v0.36.1
func ProvideDataExporter ¶ added in v0.36.1
type DataImporter ¶ added in v0.36.1
type DatabaseData ¶ added in v0.36.1
DatabaseData example data:
map[string][]map[string]any{
"users": {
{
"username": "alice",
},
},
}
type Driver ¶ added in v0.19.4
type Driver interface {
GetDSN(settings *Settings) string
GetMigrationDriver(db *sql.DB, database string, migrationsTable string) (database.Driver, error)
}
type DuplicateEntryError ¶
type DuplicateEntryError struct {
Err error
}
func (*DuplicateEntryError) As ¶
func (e *DuplicateEntryError) As(target interface{}) bool
func (*DuplicateEntryError) Error ¶
func (e *DuplicateEntryError) Error() string
func (*DuplicateEntryError) Is ¶
func (e *DuplicateEntryError) Is(err error) bool
func (*DuplicateEntryError) Unwrap ¶
func (e *DuplicateEntryError) Unwrap() error
type IsNullable ¶ added in v0.21.1
type IsNullable interface {
IsNullable() bool
}
type JSON ¶ added in v0.21.1
type JSON[T any, NullBehaviour Nullable | NonNullable] struct { // contains filtered or unexported fields }
JSON is a type wrapping other types for easy use of database json columns. It is intended to be used without a pointer but having pointers to T.
func NewJSON ¶ added in v0.21.1
func NewJSON[T any, NullBehaviour Nullable | NonNullable](val T, _ NullBehaviour) JSON[T, NullBehaviour]
type LifeCyclePurger ¶ added in v0.38.3
type LifeCyclePurger struct {
// contains filtered or unexported fields
}
func NewLifeCyclePurger ¶ added in v0.38.3
func NewLifeCyclePurgerWithSettings ¶ added in v0.38.3
func NewLifeCyclePurgerWithSettings(logger log.Logger, settings *Settings) (*LifeCyclePurger, error)
type LifecycleManager ¶ added in v0.37.0
type LifecycleManager interface {
reslife.LifeCycleer
reslife.Registerer
reslife.Purger
}
type MigrationProvider ¶ added in v0.18.0
type MigrationSettings ¶
type MigrationSettings struct {
Application string `cfg:"application" default:"{app_name}"`
Enabled bool `cfg:"enabled" default:"false"`
Reset bool `cfg:"reset" default:"false"`
Path string `cfg:"path"`
PrefixedTables bool `cfg:"prefixed_tables" default:"false"`
Provider string `cfg:"provider" default:"goose"`
}
type MysqlPlainFixtureValues ¶ added in v0.37.0
type MysqlPlainFixtureValues []any
type MysqlPlainMetaData ¶ added in v0.37.0
type MysqlSqlxMetaData ¶ added in v0.37.0
type MysqlSqlxMetaData struct {
TableName string
}
type NonNullable ¶ added in v0.21.1
type NonNullable struct{}
func (NonNullable) IsNullable ¶ added in v0.21.1
func (n NonNullable) IsNullable() bool
type Nullable ¶ added in v0.21.1
type Nullable struct{}
func (Nullable) IsNullable ¶ added in v0.21.1
type QueryBuilder ¶
type QueryBuilder interface {
Table(table string) QueryBuilder
Joins(joins []string) QueryBuilder
Where(query interface{}, args ...interface{}) QueryBuilder
GroupBy(field ...string) QueryBuilder
OrderBy(field string, direction string) QueryBuilder
Page(offset int, size int) QueryBuilder
}
type RawQueryBuilder ¶
type RawQueryBuilder struct {
Builder squirrel.SelectBuilder
}
func NewQueryBuilder ¶
func NewQueryBuilder() *RawQueryBuilder
func (*RawQueryBuilder) GroupBy ¶
func (b *RawQueryBuilder) GroupBy(field ...string) QueryBuilder
func (*RawQueryBuilder) Joins ¶
func (b *RawQueryBuilder) Joins(joins []string) QueryBuilder
func (*RawQueryBuilder) OrderBy ¶
func (b *RawQueryBuilder) OrderBy(field string, direction string) QueryBuilder
func (*RawQueryBuilder) Page ¶
func (b *RawQueryBuilder) Page(offset int, size int) QueryBuilder
func (*RawQueryBuilder) Table ¶
func (b *RawQueryBuilder) Table(table string) QueryBuilder
func (*RawQueryBuilder) Where ¶
func (b *RawQueryBuilder) Where(query interface{}, args ...interface{}) QueryBuilder
type Settings ¶
type Settings struct {
Charset string `cfg:"charset" default:"utf8mb4"`
Collation string `cfg:"collation" default:"utf8mb4_general_ci"`
ConnectionMaxIdleTime time.Duration `cfg:"connection_max_idletime" default:"120s"`
ConnectionMaxLifetime time.Duration `cfg:"connection_max_lifetime" default:"120s"`
Driver string `cfg:"driver"`
MaxIdleConnections int `cfg:"max_idle_connections" default:"2"` // 0 or negative number=no idle connections, sql driver default=2
MaxOpenConnections int `cfg:"max_open_connections" default:"0"` // 0 or negative number=unlimited, sql driver default=0
Migrations MigrationSettings `cfg:"migrations"`
MultiStatements bool `cfg:"multi_statements" default:"true"`
Parameters map[string]string `cfg:"parameters"`
ParseTime bool `cfg:"parse_time" default:"true"`
Retry SettingsRetry `cfg:"retry"`
Timeouts SettingsTimeout `cfg:"timeouts"`
Uri SettingsUri `cfg:"uri"`
}
type SettingsRetry ¶ added in v0.20.0
type SettingsRetry struct {
Enabled bool `cfg:"enabled" default:"false"`
}
type SettingsTimeout ¶ added in v0.19.4
type SettingsTimeout struct {
ReadTimeout time.Duration `cfg:"readTimeout" default:"0"` // I/O read timeout. The value must be a decimal number with a unit suffix ("ms", "s", "m", "h"), such as "30s", "0.5m" or "1m30s".
WriteTimeout time.Duration `cfg:"writeTimeout" default:"0"` // I/O write timeout. The value must be a decimal number with a unit suffix ("ms", "s", "m", "h"), such as "30s", "0.5m" or "1m30s".
Timeout time.Duration `cfg:"timeout" default:"0"` // Timeout for establishing connections, aka dial timeout. The value must be a decimal number with a unit suffix ("ms", "s", "m", "h"), such as "30s", "0.5m" or "1m30s".
}
type SettingsUri ¶ added in v0.37.0
type SettingsUri struct {
Host string `cfg:"host" default:"localhost" validation:"required"`
Port int `cfg:"port" default:"3306" validation:"required"`
User string `cfg:"user" validation:"required"`
Password string `cfg:"password" validation:"required"`
Database string `cfg:"database" validation:"required"`
}
Source Files
¶
- client.go
- connection.go
- data_exporter.go
- data_importer.go
- driver_cratedb.go
- driver_factory.go
- driver_mysql.go
- driver_redshift.go
- errors.go
- executor.go
- fixture_writer_mysql_plain.go
- fixture_writer_mysql_sqlx.go
- json.go
- lifecycle.go
- lifecycle_purger.go
- metrics.go
- migrations.go
- migrations_golang_migrate.go
- migrations_goose.go
- query_builder.go
- settings.go
Click to show internal directories.
Click to hide internal directories.