weiro/providers/db/provider.go

41 lines
803 B
Go

package db
import (
"context"
"database/sql"
"github.com/Southclaws/fault"
"github.com/lmika/blogging-tools/providers/db/sqlc/maindbq"
"github.com/lmika/blogging-tools/sql/maindb/schema"
migration "lmika.dev/pkg/litemigrate"
)
type Provider struct {
drvr *sql.DB
queries *maindbq.Queries
}
func New(dbFile string) (*Provider, error) {
drvr, err := sql.Open("sqlite", dbFile)
if err != nil {
return nil, fault.Wrap(err)
}
if err := migration.New(schema.FS, drvr).MigrateUp(context.Background()); err != nil {
return nil, fault.Wrap(err)
}
if _, err := drvr.Exec(`PRAGMA foreign_keys = 1;`); err != nil {
return nil, fault.Wrap(err)
}
return &Provider{
drvr: drvr,
queries: maindbq.New(drvr),
}, nil
}
func (db *Provider) Close() error {
return db.drvr.Close()
}