datafx

package
v0.6.10 Latest Latest
Warning

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

Go to latest
Published: Feb 9, 2025 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultDatasource = "default"

Variables

View Source
var (
	ErrUnknownProvider          = errors.New("unknown provider")
	ErrUnableToDetermineDialect = errors.New("unable to determine dialect")
)

Functions

This section is empty.

Types

type Config

type Config struct {
	Sources map[string]ConfigDatasource `conf:"SOURCES"`
}

type ConfigDatasource added in v0.6.7

type ConfigDatasource struct {
	Provider string `conf:"PROVIDER"`
	DSN      string `conf:"DSN"`
}

type ContextKey

type ContextKey string
const (
	ContextKeyUnitOfWork ContextKey = "unit-of-work"
)

type Datasource added in v0.6.9

type Datasource interface {
	GetDialect() Dialect
	GetConnection() SqlExecutor
	UseUnitOfWork(ctx context.Context) (*UnitOfWork, error)
}

type Dialect

type Dialect string
const (
	// DialectPostgresPgx Dialect = "pgx".
	DialectPostgres Dialect = "postgres"
	DialectSQLite   Dialect = "sqlite"
	DialectMySQL    Dialect = "mysql"
)

func DetermineDialect

func DetermineDialect(provider string, dsn string) (Dialect, error)

type Registry

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

func NewRegistry

func NewRegistry(logger *slog.Logger) *Registry

func (*Registry) AddConnection

func (registry *Registry) AddConnection(ctx context.Context, name string, provider string, dsn string) error

func (*Registry) GetDefault added in v0.6.9

func (registry *Registry) GetDefault() Datasource

func (*Registry) GetNamed added in v0.6.9

func (registry *Registry) GetNamed(name string) Datasource

func (*Registry) LoadFromConfig

func (registry *Registry) LoadFromConfig(ctx context.Context, config *Config) error

type SqlDatasource added in v0.6.7

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

func NewSqlDatasource added in v0.6.9

func NewSqlDatasource(ctx context.Context, dialect Dialect, dsn string) (*SqlDatasource, error)

func (*SqlDatasource) GetConnection added in v0.6.7

func (dataSource *SqlDatasource) GetConnection() SqlExecutor

func (*SqlDatasource) GetDialect added in v0.6.7

func (dataSource *SqlDatasource) GetDialect() Dialect

func (*SqlDatasource) UseUnitOfWork added in v0.6.7

func (dataSource *SqlDatasource) UseUnitOfWork(ctx context.Context) (*UnitOfWork, error)

type SqlExecutor

type SqlExecutor interface {
	ExecContext(ctx context.Context, query string, args ...any) (sql.Result, error)
	PrepareContext(ctx context.Context, query string) (*sql.Stmt, error)
	QueryContext(ctx context.Context, query string, args ...any) (*sql.Rows, error)
	QueryRowContext(ctx context.Context, query string, args ...any) *sql.Row
}

type TransactionFinalizer

type TransactionFinalizer interface {
	Rollback() error
	Commit() error
}

type TransactionStarter

type TransactionStarter interface {
	BeginTx(ctx context.Context, opts *sql.TxOptions) (*sql.Tx, error)
}

type UnitOfWork

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

func UseUnitOfWork

func UseUnitOfWork(ctx context.Context, transactionStarter TransactionStarter) (*UnitOfWork, error)

func (*UnitOfWork) Bind

func (uow *UnitOfWork) Bind(context context.Context, txScope TransactionFinalizer)

func (*UnitOfWork) Close

func (uow *UnitOfWork) Close() error

func (*UnitOfWork) Commit

func (uow *UnitOfWork) Commit() error

func (*UnitOfWork) Context

func (uow *UnitOfWork) Context() context.Context

func (*UnitOfWork) TxScope

func (uow *UnitOfWork) TxScope() TransactionFinalizer

func (*UnitOfWork) Use

func (uow *UnitOfWork) Use(fn func(TransactionFinalizer) any)

Jump to

Keyboard shortcuts

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