37 lines
595 B
Go

package postgres
import (
"database/sql"
"embed"
"fmt"
_ "github.com/jackc/pgx/v4/stdlib"
"github.com/pressly/goose/v3"
)
//go:embed schema/*.sql
var migrations embed.FS
type Database struct {
*Queries
*sql.DB
}
// Connect to a database
func Connect(connString string) (*Database, error) {
conn, err := sql.Open("pgx", connString)
if err != nil {
return nil, fmt.Errorf("open connection: %w", err)
}
goose.SetBaseFS(migrations)
if err = goose.Up(conn, "schema"); err != nil {
return nil, fmt.Errorf("migrate: %w", err)
}
return &Database{
New(conn),
conn,
}, nil
}