Documentation ¶
Overview ¶
Package db contains a variety of tools for working safely with databases.
There are tools for: - transactions (including rollbacks on error or panic) - observability (both for queries and connection info) - health checks
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrNop = o11y.NewWarning("no update or results") ErrConstrained = errors.New("violates constraints") ErrException = errors.New("exception") ErrCanceled = o11y.NewWarning("statement canceled") ErrBadConn = o11y.NewWarning("bad connection") )
Functions ¶
func EscapeLike ¶
Types ¶
type HealthCheck ¶
func (*HealthCheck) HealthChecks ¶
func (h *HealthCheck) HealthChecks() (name string, ready, live func(ctx context.Context) error)
func (*HealthCheck) MetricName ¶
func (h *HealthCheck) MetricName() string
type Querier ¶
type Querier interface { // ExecContext executes the query with placeholder parameters that match the args. // Use this if the query does not use named parameters (for that use NamedExecContext), // and you do not care about the data the query generates. ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error) // GetContext expects placeholder parameters in the query and will bind args to them. // A single row result will be mapped to dest which must be a pointer to a struct. // In the case of no result the error returned will be sql.ErrNoRows. GetContext(ctx context.Context, dest interface{}, query string, args ...interface{}) error // NamedExecContext expect a query with named parameters, fields from the arg struct will be mapped // to the named parameters. Use this if you do not care about the data the query generates, and // you don't want to use placeholder parameters (see ExecContext) NamedExecContext(ctx context.Context, query string, arg interface{}) (sql.Result, error) // SelectContext expects placeholder parameters in the query and will bind args to them. // Each resultant row will be scanned into dest, which must be a slice. // (If you expect (or want) a single row in the response use GetContext instead.) // This method never returns sql.ErrNoRows, instead the dest slice will be empty. SelectContext(ctx context.Context, dest interface{}, query string, args ...interface{}) error }
Querier can either be a *sqlx.DB or *sqlx.Tx
type TxManager ¶
type TxManager struct {
// contains filtered or unexported fields
}
func NewTxManager ¶
func (*TxManager) WithTransaction ¶
WithTransaction simply delegates to WithTx. Deprecated
func (*TxManager) WithTx ¶
WithTx wraps f in an explicit o11y'd transaction, handling rollback if f returns an error. It will retry the transaction a few times in the face of ErrBadConn errors. The length here is due to the internalised func, which we want to encapsulate to avoid reuse, since it is highly coupled to the retry behaviour.
Click to show internal directories.
Click to hide internal directories.