us-dop-bot/db/db.go
2024-02-25 21:23:42 -04:00

44 lines
582 B
Go

package db
import (
"context"
"database/sql"
_ "embed"
"fmt"
_ "modernc.org/sqlite"
)
const (
DEFAULT_DRIVER = "sqlite"
)
var (
//go:embed schema.sql
schema string
)
type DB struct {
*sql.DB
}
func Dial(ctx context.Context, driver, uri string) *DB {
db, err := sql.Open(driver, uri)
if err != nil {
fmt.Println("Failed to connect to database:", err)
panic(err)
}
err = db.PingContext(ctx)
if err != nil {
fmt.Printf("Pinging with context: %s", err)
panic(err)
}
_, err = db.ExecContext(ctx, schema)
if err != nil {
panic(err)
}
return &DB{db}
}