versia-go/entsqlite.go

30 lines
642 B
Go
Raw Permalink Normal View History

2024-08-11 03:51:22 +02:00
package main
import (
"database/sql/driver"
"github.com/pkg/errors"
"github.com/rs/zerolog/log"
"modernc.org/sqlite"
)
type sqliteDriver struct {
*sqlite.Driver
}
func (d sqliteDriver) Open(name string) (driver.Conn, error) {
log.Trace().Str("name", name).Msg("Opening SQLite connection")
conn, err := d.Driver.Open(name)
if err != nil {
return conn, err
}
c := conn.(interface {
Exec(stmt string, args []driver.Value) (driver.Result, error)
})
if _, err := c.Exec("PRAGMA foreign_keys = on;", nil); err != nil {
conn.Close()
return nil, errors.Wrap(err, "failed to enable enable foreign keys")
}
return conn, nil
}