This repository has been archived on 2026-09-07. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
sqaffold/scaffold.go
T
2026-09-01 00:13:01 +01:00

55 lines
1.0 KiB
Go

package sqaffold
import (
"context"
"database/sql"
"code.aneur.in/go/record"
"code.aneur.in/go/version"
)
type Scaffold struct {
ctx context.Context
conn *sql.DB
apps map[string]version.Migration
}
func (s *Scaffold) Exec(query string, args ...any) (sql.Result, error) {
return s.conn.ExecContext(s.ctx, query, args...)
}
func (s *Scaffold) Query(query string, args ...any) ([]record.Record, error) {
rows, err := s.conn.QueryContext(s.ctx, query, args...)
if err != nil {
return nil, Err(err)
}
return ScanRecords(rows)
}
func (s *Scaffold) QueryOne(query string, args ...any) (record.Record, error) {
rows, err := s.conn.QueryContext(s.ctx, query, args...)
if err != nil {
return nil, Err(err)
}
return ScanOneRecord(rows)
}
func (s *Scaffold) WithApp(name string, migration version.Migration) *Scaffold {
s.apps[name] = migration
return s
}
func NewScaffold(ctx context.Context, conn *sql.DB) *Scaffold {
s := &Scaffold{
ctx: ctx,
conn: conn,
apps: map[string]version.Migration{},
}
return s
}