database

package
v0.0.0-...-ff690be Latest Latest
Warning

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

Go to latest
Published: Jan 5, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var New = func(cfg config.Database, log *logger.Logger) (DatabaseInterface, error) {
	dsn := fmt.Sprintf(
		"host=%s port=%d user=%s password=%s dbname=%s sslmode=disable",
		cfg.Host,
		cfg.Port,
		cfg.User,
		cfg.Password,
		cfg.DBName,
	)

	db, err := sql.Open("postgres", dsn)

	if err != nil {
		return nil, fmt.Errorf("failed to open database connection: %w", err)
	}

	db.SetMaxOpenConns(25)
	db.SetMaxIdleConns(25)
	db.SetConnMaxIdleTime(5 * time.Minute)
	db.SetConnMaxLifetime(2 * time.Hour)

	dbInstance := &Database{
		db:     db,
		logger: log,
	}

	if err = dbInstance.Ping(); err != nil {
		_ = dbInstance.Close()
		return nil, err
	}

	if log != nil {
		log.Info("Database connection established", nil)
	}

	return dbInstance, nil
}

Functions

func MigrateDown

func MigrateDown(cfg config.Database) (err error)

func MigrateUp

func MigrateUp(cfg config.Database) (err error)

func MigrateVersion

func MigrateVersion(cfg config.Database) (version int, err error)

Types

type ContentFS

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

type Database

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

func (*Database) Begin

func (d *Database) Begin() (*sql.Tx, error)

func (*Database) Close

func (d *Database) Close() error

func (*Database) Exec

func (d *Database) Exec(query string, args ...any) (sql.Result, error)

func (*Database) Ping

func (d *Database) Ping() error

func (*Database) Query

func (d *Database) Query(query string, args ...any) (*sql.Rows, error)

func (*Database) QueryRow

func (d *Database) QueryRow(query string, args ...any) *sql.Row

func (*Database) Stats

func (d *Database) Stats() sql.DBStats

type DatabaseInterface

type DatabaseInterface interface {
	Close() error
	Ping() error
	Query(query string, args ...any) (*sql.Rows, error)
	QueryRow(query string, args ...any) *sql.Row
	Exec(query string, args ...any) (sql.Result, error)
	Begin() (*sql.Tx, error)
	Stats() sql.DBStats
}

type FS

type FS interface {
	fs.FS
	ReadDir(string) ([]fs.DirEntry, error)
	ReadFile(string) ([]byte, error)
}

Jump to

Keyboard shortcuts

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