package db import ( "context" "database/sql" "log" _ "github.com/lib/pq" ) type Db struct { *sql.DB } type Tx struct { *sql.Tx } func New(url string) (*Db, error) { db, err := sql.Open("postgres", url) if err != nil { return nil, err } // test connection _, err = db.Exec("SELECT 1") if err != nil { log.Printf("failed to connect to database: %v", err) } return &Db{db}, nil } func (d *Db) Migrate() error { return nil } func (d *Db) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) { tx, err := d.DB.BeginTx(ctx, opts) if err != nil { return nil, err } return &Tx{tx}, nil }