dbutil

package
v0.12.1 Latest Latest
Warning

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

Go to latest
Published: Sep 16, 2022 License: MPL-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrForeignTables = fmt.Errorf("the database contains foreign tables")
View Source
var ErrNotOwned = fmt.Errorf("the database is owned by")
View Source
var ErrUnsupportedDatabaseVersion = fmt.Errorf("unsupported database schema version")

Functions

This section is empty.

Types

type ContextExecable

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

type Database

type Database struct {
	RawDB        *sql.DB
	Owner        string
	VersionTable string
	Log          DatabaseLogger
	Dialect      Dialect
	UpgradeTable UpgradeTable

	IgnoreForeignTables       bool
	IgnoreUnsupportedDatabase bool
	// contains filtered or unexported fields
}

func NewFromConfig

func NewFromConfig(owner string, cfg bridgeconfig.DatabaseConfig, logger DatabaseLogger) (*Database, error)

func NewWithDB

func NewWithDB(db *sql.DB, rawDialect string) (*Database, error)

func NewWithDialect

func NewWithDialect(uri, rawDialect string) (*Database, error)

func (*Database) Begin

func (ld *Database) Begin() (*LoggingTxn, error)

func (*Database) BeginTx

func (ld *Database) BeginTx(ctx context.Context, opts *sql.TxOptions) (*LoggingTxn, error)

func (*Database) Child

func (db *Database) Child(versionTable string, upgradeTable UpgradeTable, log DatabaseLogger) *Database

func (*Database) Configure

func (db *Database) Configure(cfg bridgeconfig.DatabaseConfig) error

func (*Database) Upgrade

func (db *Database) Upgrade() error

type DatabaseLogger

type DatabaseLogger interface {
	QueryTiming(ctx context.Context, method, query string, args []interface{}, duration time.Duration)
	WarnUnsupportedVersion(current, latest int)
	PrepareUpgrade(current, latest int)
	DoUpgrade(from, to int, message string)
	// Deprecated: legacy warning method, return errors instead
	Warn(msg string, args ...interface{})
}
var NoopLogger DatabaseLogger = &noopLogger{}

func MauLogger

func MauLogger(log maulogger.Logger) DatabaseLogger

func ZeroLogger

func ZeroLogger(log zerolog.Logger) DatabaseLogger

func ZeroLoggerPtr

func ZeroLoggerPtr(log *zerolog.Logger) DatabaseLogger

type Dialect

type Dialect int
const (
	DialectUnknown Dialect = iota
	Postgres
	SQLite
)

func ParseDialect

func ParseDialect(engine string) (Dialect, error)

func (Dialect) String

func (dialect Dialect) String() string

type Execable

type Execable interface {
	ContextExecable
	Exec(query string, args ...interface{}) (sql.Result, error)
	Query(query string, args ...interface{}) (*sql.Rows, error)
	QueryRow(query string, args ...interface{}) *sql.Row
}

type LoggingExecable

type LoggingExecable struct {
	UnderlyingExecable Execable
	// contains filtered or unexported fields
}

LoggingExecable is a wrapper for anything with database Exec methods (i.e. sql.Conn, sql.DB and sql.Tx) that can preprocess queries (e.g. replacing $ with ? on SQLite) and log query durations.

func (*LoggingExecable) Exec

func (le *LoggingExecable) Exec(query string, args ...interface{}) (sql.Result, error)

func (*LoggingExecable) ExecContext

func (le *LoggingExecable) ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)

func (*LoggingExecable) Query

func (le *LoggingExecable) Query(query string, args ...interface{}) (*sql.Rows, error)

func (*LoggingExecable) QueryContext

func (le *LoggingExecable) QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)

func (*LoggingExecable) QueryRow

func (le *LoggingExecable) QueryRow(query string, args ...interface{}) *sql.Row

func (*LoggingExecable) QueryRowContext

func (le *LoggingExecable) QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row

type LoggingTxn

type LoggingTxn struct {
	LoggingExecable
	UnderlyingTx *sql.Tx
	// contains filtered or unexported fields
}

func (*LoggingTxn) Commit

func (lt *LoggingTxn) Commit() error

func (*LoggingTxn) Rollback

func (lt *LoggingTxn) Rollback() error

type Scannable

type Scannable interface {
	Scan(...interface{}) error
}

type Transaction

type Transaction interface {
	Execable
	Commit() error
	Rollback() error
}

type UpgradeTable

type UpgradeTable []upgrade

func (*UpgradeTable) Register

func (ut *UpgradeTable) Register(from, to int, message string, fn upgradeFunc)

func (*UpgradeTable) RegisterFS

func (ut *UpgradeTable) RegisterFS(fs fullFS)

func (*UpgradeTable) RegisterFSPath

func (ut *UpgradeTable) RegisterFSPath(fs fullFS, dir string)

Jump to

Keyboard shortcuts

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