Spaces:
Sleeping
Sleeping
| package sqlite | |
| import ( | |
| "database/sql" | |
| "database/sql/driver" | |
| "fmt" | |
| "modernc.org/sqlite" | |
| ) | |
| // https://github.com/ent/ent/discussions/1667 | |
| type sqliteDriver struct { | |
| *sqlite.Driver | |
| } | |
| func (d sqliteDriver) Open(name string) (driver.Conn, error) { | |
| conn, err := d.Driver.Open(name) | |
| if err != nil { | |
| return conn, err | |
| } | |
| //nolint:forcetypeassert | |
| c := conn.(interface { | |
| Exec(stmt string, args []driver.Value) (driver.Result, error) | |
| }) | |
| if _, err := c.Exec("PRAGMA foreign_keys = on;", nil); err != nil { | |
| if err := conn.Close(); err != nil { | |
| return nil, fmt.Errorf("failed to close connection: %w", err) | |
| } | |
| return nil, fmt.Errorf("failed to enable foreign keys: %w", err) | |
| } | |
| return conn, nil | |
| } | |
| func init() { | |
| sql.Register("sqlite3", sqliteDriver{Driver: &sqlite.Driver{}}) | |
| } | |