Documentation ¶
Index ¶
- Constants
- Variables
- type Config
- type ContextExecable
- type Database
- func (ld *Database) Begin() (*LoggingTxn, error)
- func (ld *Database) BeginTx(ctx context.Context, opts *sql.TxOptions) (*LoggingTxn, error)
- func (db *Database) Child(versionTable string, upgradeTable UpgradeTable, log DatabaseLogger) *Database
- func (db *Database) ColumnExists(tx Execable, table, column string) (exists bool, err error)
- func (db *Database) Configure(cfg Config) error
- func (db *Database) DoTxn(ctx context.Context, opts *sql.TxOptions, fn func(ctx context.Context) error) error
- func (db *Database) TableExists(tx Execable, table string) (exists bool, err error)
- func (db *Database) Upgrade() error
- type DatabaseLogger
- type Dialect
- type Execable
- type LoggingExecable
- func (le *LoggingExecable) Exec(query string, args ...interface{}) (sql.Result, error)
- func (le *LoggingExecable) ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
- func (le *LoggingExecable) Query(query string, args ...interface{}) (Rows, error)
- func (le *LoggingExecable) QueryContext(ctx context.Context, query string, args ...interface{}) (Rows, error)
- func (le *LoggingExecable) QueryRow(query string, args ...interface{}) *sql.Row
- func (le *LoggingExecable) QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row
- type LoggingRows
- func (lrs *LoggingRows) Close() error
- func (lrs *LoggingRows) ColumnTypes() ([]*sql.ColumnType, error)
- func (lrs *LoggingRows) Columns() ([]string, error)
- func (lrs *LoggingRows) Err() error
- func (lrs *LoggingRows) Next() bool
- func (lrs *LoggingRows) NextResultSet() bool
- func (lrs *LoggingRows) Scan(dest ...any) error
- type LoggingTxn
- type Rows
- type Scannable
- type Transaction
- type UnderlyingContextExecable
- type UnderlyingExecable
- type UpgradeTable
- type ZeroLogSettings
Constants ¶
View Source
const ( ContextKeyDatabaseTransaction contextKey = iota ContextKeyDoTxnCallerSkip )
Variables ¶
View Source
var ( ErrTxn = errors.New("transaction") ErrTxnBegin = fmt.Errorf("%w: begin", ErrTxn) ErrTxnCommit = fmt.Errorf("%w: commit", ErrTxn) )
View Source
var ErrForeignTables = errors.New("the database contains foreign tables")
View Source
var ErrNotOwned = errors.New("the database is owned by")
View Source
var ErrUnsupportedDatabaseVersion = errors.New("unsupported database schema version")
View Source
var ErrUnsupportedDialect = errors.New("unsupported database dialect")
Functions ¶
This section is empty.
Types ¶
type ContextExecable ¶
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 Config, logger DatabaseLogger) (*Database, error)
func NewWithDialect ¶
func (*Database) Begin ¶
func (ld *Database) Begin() (*LoggingTxn, error)
func (*Database) Child ¶
func (db *Database) Child(versionTable string, upgradeTable UpgradeTable, log DatabaseLogger) *Database
func (*Database) ColumnExists ¶ added in v0.15.2
func (*Database) TableExists ¶ added in v0.15.1
type DatabaseLogger ¶
type DatabaseLogger interface { QueryTiming(ctx context.Context, method, query string, args []interface{}, nrows int, duration time.Duration, err error) WarnUnsupportedVersion(current, compat, latest int) PrepareUpgrade(current, compat, latest int) DoUpgrade(from, to int, message string, txn bool) // Deprecated: legacy warning method, return errors instead Warn(msg string, args ...interface{}) }
var NoopLogger DatabaseLogger = &noopLogger{}
func MauLogger
deprecated
func MauLogger(log maulogger.Logger) DatabaseLogger
Deprecated: Use zerolog instead
func ZeroLogger ¶
func ZeroLogger(log zerolog.Logger, cfg ...ZeroLogSettings) DatabaseLogger
func ZeroLoggerPtr ¶
func ZeroLoggerPtr(log *zerolog.Logger, cfg ...ZeroLogSettings) DatabaseLogger
type LoggingExecable ¶
type LoggingExecable struct { UnderlyingExecable UnderlyingExecable // 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 (*LoggingExecable) Query ¶
func (le *LoggingExecable) Query(query string, args ...interface{}) (Rows, error)
func (*LoggingExecable) QueryContext ¶
func (*LoggingExecable) QueryRow ¶
func (le *LoggingExecable) QueryRow(query string, args ...interface{}) *sql.Row
func (*LoggingExecable) QueryRowContext ¶
type LoggingRows ¶ added in v0.12.3
type LoggingRows struct {
// contains filtered or unexported fields
}
func (*LoggingRows) Close ¶ added in v0.12.3
func (lrs *LoggingRows) Close() error
func (*LoggingRows) ColumnTypes ¶ added in v0.12.3
func (lrs *LoggingRows) ColumnTypes() ([]*sql.ColumnType, error)
func (*LoggingRows) Columns ¶ added in v0.12.3
func (lrs *LoggingRows) Columns() ([]string, error)
func (*LoggingRows) Err ¶ added in v0.12.3
func (lrs *LoggingRows) Err() error
func (*LoggingRows) Next ¶ added in v0.12.3
func (lrs *LoggingRows) Next() bool
func (*LoggingRows) NextResultSet ¶ added in v0.12.3
func (lrs *LoggingRows) NextResultSet() bool
func (*LoggingRows) Scan ¶ added in v0.12.3
func (lrs *LoggingRows) Scan(dest ...any) error
type LoggingTxn ¶
type LoggingTxn struct { LoggingExecable UnderlyingTx *sql.Tx StartTime time.Time EndTime time.Time // contains filtered or unexported fields }
func (*LoggingTxn) Commit ¶
func (lt *LoggingTxn) Commit() error
func (*LoggingTxn) Rollback ¶
func (lt *LoggingTxn) Rollback() error
type Transaction ¶
type UnderlyingContextExecable ¶ added in v0.12.3
type UnderlyingContextExecable 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 UnderlyingExecable ¶ added in v0.12.3
type UpgradeTable ¶
type UpgradeTable []upgrade
func (*UpgradeTable) Register ¶
func (ut *UpgradeTable) Register(from, to, compat int, message string, txn bool, fn upgradeFunc)
func (*UpgradeTable) RegisterFS ¶
func (ut *UpgradeTable) RegisterFS(fs fullFS)
func (*UpgradeTable) RegisterFSPath ¶
func (ut *UpgradeTable) RegisterFSPath(fs fullFS, dir string)
type ZeroLogSettings ¶ added in v0.15.2
Source Files ¶
Click to show internal directories.
Click to hide internal directories.