Documentation
¶
Overview ¶
Package database provides PostgreSQL connection management and utilities for Nivo services.
Index ¶
- Constants
- func IsCheckViolation(err error) bool
- func IsForeignKeyViolation(err error) bool
- func IsUniqueViolation(err error) bool
- type Config
- type DB
- func (db *DB) Close() error
- func (db *DB) ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
- func (db *DB) ExecWithTimeout(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
- func (db *DB) HealthCheck(ctx context.Context) error
- func (db *DB) QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
- func (db *DB) QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row
- func (db *DB) QueryRowWithTimeout(ctx context.Context, query string, args ...interface{}) (*sql.Row, context.CancelFunc)
- func (db *DB) QueryTimeout() time.Duration
- func (db *DB) QueryWithTimeout(ctx context.Context, query string, args ...interface{}) (*sql.Rows, context.CancelFunc, error)
- func (db *DB) SetQueryTimeout(timeout time.Duration)
- func (db *DB) Stats() sql.DBStats
- func (db *DB) Transaction(ctx context.Context, fn func(*sql.Tx) error) error
- func (db *DB) TransactionWithOptions(ctx context.Context, opts *sql.TxOptions, fn func(*sql.Tx) error) error
- func (db *DB) WithTimeout(ctx context.Context) (context.Context, context.CancelFunc)
- type Migrator
Constants ¶
const DefaultQueryTimeout = 5 * time.Second
Default query timeout for database operations
Variables ¶
This section is empty.
Functions ¶
func IsCheckViolation ¶
IsCheckViolation checks if an error is a check constraint violation (23514).
func IsForeignKeyViolation ¶
IsForeignKeyViolation checks if an error is a foreign key constraint violation (23503).
func IsUniqueViolation ¶
IsUniqueViolation checks if an error is a unique constraint violation (23505).
Types ¶
type Config ¶
type Config struct {
Host string
Port int
User string
Password string
Database string
SSLMode string
MaxOpenConns int
MaxIdleConns int
ConnMaxLifetime time.Duration
ConnMaxIdleTime time.Duration
ConnectTimeout time.Duration
QueryTimeout time.Duration // Default timeout for queries
}
Config holds database configuration.
func ConfigFromEnv ¶
ConfigFromEnv creates a Config from a config package Config. This bridges the shared/config and shared/database packages.
func DefaultConfig ¶
func DefaultConfig() Config
DefaultConfig returns a default database configuration suitable for development.
type DB ¶
DB wraps sql.DB with additional functionality.
func MustConnect ¶
MustConnect is like Connect but panics on error. Useful for initialization.
func NewFromURL ¶
NewFromURL creates a database connection from a connection URL.
func (*DB) ExecContext ¶
func (db *DB) ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
ExecContext is a convenience wrapper around sql.DB.ExecContext.
func (*DB) ExecWithTimeout ¶
func (db *DB) ExecWithTimeout(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
ExecWithTimeout executes a statement with the configured timeout.
func (*DB) HealthCheck ¶
HealthCheck performs a health check on the database connection.
func (*DB) QueryContext ¶
func (db *DB) QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
QueryContext is a convenience wrapper around sql.DB.QueryContext.
func (*DB) QueryRowContext ¶
QueryRowContext is a convenience wrapper around sql.DB.QueryRowContext.
func (*DB) QueryRowWithTimeout ¶
func (db *DB) QueryRowWithTimeout(ctx context.Context, query string, args ...interface{}) (*sql.Row, context.CancelFunc)
QueryRowWithTimeout executes a query with the configured timeout. Returns the row and a cancel function that should be deferred.
func (*DB) QueryTimeout ¶
QueryTimeout returns the current query timeout.
func (*DB) QueryWithTimeout ¶
func (db *DB) QueryWithTimeout(ctx context.Context, query string, args ...interface{}) (*sql.Rows, context.CancelFunc, error)
QueryWithTimeout executes a query with the configured timeout. The caller should defer the cancel function.
func (*DB) SetQueryTimeout ¶
SetQueryTimeout sets the default query timeout.
func (*DB) Transaction ¶
Transaction executes a function within a database transaction. If the function returns an error, the transaction is rolled back. Otherwise, the transaction is committed.
func (*DB) TransactionWithOptions ¶
func (db *DB) TransactionWithOptions(ctx context.Context, opts *sql.TxOptions, fn func(*sql.Tx) error) error
TransactionWithOptions executes a function within a database transaction with options.
func (*DB) WithTimeout ¶
WithTimeout returns a context with the configured query timeout. Use this for long-running queries that need explicit timeout control.