Documentation ¶
Index ¶
- Constants
- func InitTimescale(ctx context.Context, db DB) (err error)
- func IsErrAlreadyExists(err error) bool
- func Migrate(ctx context.Context, logger *slog.Logger, db DB, migrations []Migration) (err error)
- func Rollback(ctx context.Context, db DB, migrations []Migration, numberToRollback int64) (err error)
- type DB
- type Database
- func (db *Database) Acquire(ctx context.Context) (*sql.Conn, error)
- func (db *Database) Begin(ctx context.Context) (Tx, error)
- func (db *Database) BeginTx(ctx context.Context, opts *sql.TxOptions) (Tx, error)
- func (db *Database) Close() error
- func (db *Database) Exec(ctx context.Context, query string, args ...any) (sql.Result, error)
- func (db *Database) Get(ctx context.Context, dest any, query string, args ...any) error
- func (db *Database) Ping(ctx context.Context) error
- func (db *Database) Query(ctx context.Context, query string, args ...any) (*sql.Rows, error)
- func (db *Database) Rebind(query string) (ret string)
- func (db *Database) Select(ctx context.Context, dest any, query string, args ...any) error
- func (db *Database) SetConnMaxIdleTime(duration time.Duration)
- func (db *Database) SetConnMaxLifetime(d time.Duration)
- func (db *Database) SetMaxIdleConns(n int)
- func (db *Database) SetMaxOpenConns(n int)
- func (db *Database) Stats() sql.DBStats
- func (db *Database) Transaction(ctx context.Context, fn func(tx Tx) error) (err error)
- type Migration
- type Queryer
- type Transaction
- func (tx *Transaction) Commit() error
- func (tx *Transaction) Exec(ctx context.Context, query string, args ...any) (sql.Result, error)
- func (tx *Transaction) Get(ctx context.Context, dest any, query string, args ...any) error
- func (tx *Transaction) Query(ctx context.Context, query string, args ...any) (*sql.Rows, error)
- func (tx *Transaction) Rebind(query string) (ret string)
- func (tx *Transaction) Rollback() error
- func (tx *Transaction) Select(ctx context.Context, dest any, query string, args ...any) error
- type Tx
- type Txer
Constants ¶
const (
ErrAlreadyExists = "duplicate key value violates unique constraint"
)
Variables ¶
This section is empty.
Functions ¶
func IsErrAlreadyExists ¶
Types ¶
type DB ¶
type DB interface { Ping(ctx context.Context) error SetMaxIdleConns(n int) SetMaxOpenConns(n int) SetConnMaxIdleTime(d time.Duration) SetConnMaxLifetime(d time.Duration) Stats() sql.DBStats Acquire(ctx context.Context) (conn *sql.Conn, err error) Close() error Queryer Txer }
DB represents a pool of zero or more underlying connections. It must be safe for concurrent use by multiple goroutines.
type Database ¶
type Database struct {
// contains filtered or unexported fields
}
Database is wrapper of `sqlx.DB` which implements `DB`
func Connect ¶
Connect to a database and verify the connections with a ping. See https://www.alexedwards.net/blog/configuring-sqldb and https://making.pusher.com/production-ready-connection-pooling-in-go https://brandur.org/fragments/postgres-parameters for the details
func (*Database) Begin ¶
Begin starts a transaction. The default isolation level is dependent on the driver. The provided context is used until the transaction is committed or rolled back. If the context is canceled, the sql package will roll back the transaction. Tx.Commit will return an error if the context provided to BeginTx is canceled.
func (*Database) BeginTx ¶
BeginTx starts a transaction.
The provided context is used until the transaction is committed or rolled back. If the context is canceled, the sql package will roll back the transaction. Tx.Commit will return an error if the context provided to BeginTx is canceled.
The provided TxOptions is optional and may be nil if defaults should be used. If a non-default isolation level is used that the driver doesn't support, an error will be returned.
func (*Database) Exec ¶
Exec executes a query without returning any rows. The args are for any placeholder parameters in the query.
func (*Database) Get ¶
Get a single record. Any placeholder parameters are replaced with supplied args. An `ErrNoRows` error is returned if the result set is empty.
func (*Database) Ping ¶
Ping verifies a connection to the database is still alive, establishing a connection if necessary.
func (*Database) Query ¶
Query executes a query that returns rows, typically a SELECT. The args are for any placeholder parameters in the query.
func (*Database) Select ¶
Select an array of records. Any placeholder parameters are replaced with supplied args.
func (*Database) SetConnMaxIdleTime ¶
SetConnMaxIdleTime sets the maximum amount of time a connection may be idle.
Expired connections may be closed lazily before reuse.
If d <= 0, connections are not closed due to a connection's idle time.
func (*Database) SetConnMaxLifetime ¶
SetConnMaxLifetime sets the maximum amount of time a connection may be reused.
Expired connections may be closed lazily before reuse.
If d <= 0, connections are not closed due to a connection's age.
func (*Database) SetMaxIdleConns ¶
SetMaxIdleConns sets the maximum number of connections in the idle connection pool.
If MaxOpenConns is greater than 0 but less than the new MaxIdleConns, then the new MaxIdleConns will be reduced to match the MaxOpenConns limit.
If n <= 0, no idle connections are retained.
The default max idle connections is currently 2. This may change in a future release.
func (*Database) SetMaxOpenConns ¶
SetMaxOpenConns sets the maximum number of open connections to the database.
If MaxIdleConns is greater than 0 and the new MaxOpenConns is less than MaxIdleConns, then MaxIdleConns will be reduced to match the new MaxOpenConns limit.
If n <= 0, then there is no limit on the number of open connections. The default is 0 (unlimited).
type Queryer ¶
type Queryer interface { Get(ctx context.Context, dest any, query string, args ...any) error Select(ctx context.Context, dest any, query string, args ...any) error Query(ctx context.Context, query string, args ...any) (*sql.Rows, error) Exec(ctx context.Context, query string, args ...any) (sql.Result, error) Rebind(query string) (ret string) }
Queryer allows to query a database.
type Transaction ¶
type Transaction struct {
// contains filtered or unexported fields
}
Transaction is wrapper of `sqlx.Tx` which implements `Tx`
func (*Transaction) Exec ¶
Exec executes a query without returning any rows. The args are for any placeholder parameters in the query.
func (*Transaction) Get ¶
Get a single record. Any placeholder parameters are replaced with supplied args. An `ErrNoRows` error is returned if the result set is empty.
func (*Transaction) Query ¶
Query executes a query that returns rows, typically a SELECT. The args are for any placeholder parameters in the query.
func (*Transaction) Rebind ¶
func (tx *Transaction) Rebind(query string) (ret string)
func (*Transaction) Rollback ¶
func (tx *Transaction) Rollback() error
Rollback aborts the transaction.