45 lines
624 B
Go
45 lines
624 B
Go
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
|
|
}
|