Files
zampler/internal/db/db.go
T

48 lines
847 B
Go
Raw Normal View History

2026-08-31 22:58:18 +01:00
package db
import (
"context"
"database/sql"
"code.aneur.in/go/record"
"github.com/rs/zerolog"
)
type DB struct {
Ctx context.Context
Log zerolog.Logger
SQL *sql.DB
}
func (db *DB) Exec(query string, args ...any) (sql.Result, error) {
return db.SQL.ExecContext(db.Ctx, query, args...)
}
func (db *DB) Query(query string, args ...any) ([]record.Record, error) {
rows, err := db.SQL.QueryContext(db.Ctx, query, args...)
if err != nil {
return nil, Err(err)
}
return ScanRecords(rows)
}
func (db *DB) QueryOne(query string, args ...any) (record.Record, error) {
rows, err := db.SQL.QueryContext(db.Ctx, query, args...)
if err != nil {
return nil, Err(err)
}
return ScanOneRecord(rows)
}
func New(ctx context.Context, log zerolog.Logger, sql *sql.DB) *DB {
db := &DB{
Ctx: ctx,
Log: log,
SQL: sql,
}
return db
}