database

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 15, 2026 License: GPL-3.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrNotFound is returned when a record is not found
	ErrNotFound = errors.New("record not found")

	// ErrDuplicateKey is returned when trying to insert a duplicate key
	ErrDuplicateKey = errors.New("duplicate key")

	// ErrInvalidConfig is returned when database configuration is invalid
	ErrInvalidConfig = errors.New("invalid database configuration")

	// ErrConnectionFailed is returned when database connection fails
	ErrConnectionFailed = errors.New("database connection failed")

	// ErrTransactionFailed is returned when transaction fails
	ErrTransactionFailed = errors.New("transaction failed")

	// ErrMigrationFailed is returned when migration fails
	ErrMigrationFailed = errors.New("migration failed")
)

Functions

This section is empty.

Types

type Config

type Config struct {
	// Driver name: sqlite3, postgres, mysql
	Driver string

	// Connection string or DSN
	DSN string

	// Maximum number of open connections
	MaxOpenConns int

	// Maximum number of idle connections
	MaxIdleConns int

	// Maximum lifetime of a connection
	ConnMaxLifetime time.Duration

	// Maximum idle time of a connection
	ConnMaxIdleTime time.Duration
}

Config represents common database configuration

func DefaultConfig

func DefaultConfig(driver, dsn string) *Config

DefaultConfig returns a Config with sensible defaults

type Connection

type Connection struct {
	// contains filtered or unexported fields
}

Connection implements the Database interface wrapping *sql.DB

func (*Connection) BeginTx

func (c *Connection) BeginTx(ctx context.Context) (*sql.Tx, error)

BeginTx starts a new transaction

func (*Connection) Close

func (c *Connection) Close() error

Close closes the database connection

func (*Connection) DB

func (c *Connection) DB() *sql.DB

DB returns the underlying *sql.DB

func (*Connection) Exec

func (c *Connection) Exec(ctx context.Context, query string, args ...interface{}) (sql.Result, error)

Exec executes a query without returning rows

func (*Connection) Ping

func (c *Connection) Ping(ctx context.Context) error

Ping checks if the database connection is alive

func (*Connection) Query

func (c *Connection) Query(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)

Query executes a query that returns rows

func (*Connection) QueryRow

func (c *Connection) QueryRow(ctx context.Context, query string, args ...interface{}) *sql.Row

QueryRow executes a query that returns at most one row

func (*Connection) Stats

func (c *Connection) Stats() sql.DBStats

Stats returns database statistics

type Database

type Database interface {
	// DB returns the underlying *sql.DB for direct access when needed
	DB() *sql.DB

	// Ping checks if the database connection is alive
	Ping(ctx context.Context) error

	// Close closes the database connection
	Close() error

	// BeginTx starts a new transaction
	BeginTx(ctx context.Context) (*sql.Tx, error)

	// Exec executes a query without returning rows
	Exec(ctx context.Context, query string, args ...interface{}) (sql.Result, error)

	// Query executes a query that returns rows
	Query(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)

	// QueryRow executes a query that returns at most one row
	QueryRow(ctx context.Context, query string, args ...interface{}) *sql.Row

	// Stats returns database statistics
	Stats() sql.DBStats
}

Database represents a generic database connection interface

func New

func New(cfg *Config) (Database, error)

New creates a new database connection from config

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL