// Package sqlite 提供采购服务的 SQLite 驱动注册。 package sqlite import ( "database/sql" "fmt" "github.com/mattn/go-sqlite3" ) const driverName = "cmbuyer-sqlite3" func init() { sql.Register(driverName, &sqlite3.SQLiteDriver{ ConnectHook: func(connection *sqlite3.SQLiteConn) error { _, err := connection.Exec("PRAGMA foreign_keys = ON", nil) return err }, }) } // Open 打开 SQLite 数据源并逐连接启用外键,避免连接池配置遗漏而绕过授权与任务的引用约束。 func Open(dataSourceName string) (*sql.DB, error) { database, err := sql.Open(driverName, dataSourceName) if err != nil { return nil, err } if err := database.Ping(); err != nil { _ = database.Close() return nil, fmt.Errorf("ping SQLite database: %w", err) } return database, nil }