Documentation
¶
Index ¶
- func ScanFirstValue[T any](rows *sql.Rows, dest *T) error
- type DB
- type FakeDB
- func (db *FakeDB) Close() error
- func (db *FakeDB) ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
- func (db *FakeDB) QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
- func (db *FakeDB) WithRetryableTransaction(ctx context.Context, f func(context.Context, *sql.Tx) error) error
- type RDB
- func (db *RDB) Close() error
- func (db *RDB) ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
- func (db *RDB) QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
- func (db *RDB) WithRetryableTransaction(ctx context.Context, f func(context.Context, *sql.Tx) error) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type DB ¶
type DB interface {
ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
WithRetryableTransaction(ctx context.Context, f func(context.Context, *sql.Tx) error) error
Close() error
}
type FakeDB ¶ added in v0.9.0
type FakeDB struct{}
FakeDB is a fake implementation of `DB`. All methods on `FakeDB` are implemented as no-ops
func (*FakeDB) ExecContext ¶ added in v0.9.0
func (*FakeDB) QueryContext ¶ added in v0.9.0
type RDB ¶
RDB wraps a *sql.DB and retries queries using an exponential backoff (with jitter) on lock_timeout errors.
func (*RDB) ExecContext ¶
func (db *RDB) ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
ExecContext wraps sql.DB.ExecContext, retrying queries on lock_timeout errors.
Click to show internal directories.
Click to hide internal directories.