package database import ( "database/sql" "time" "git.linuxforward.com/byom/byom-golang-lib/pkg/errors" _ "github.com/mattn/go-sqlite3" ) func NewSQLiteDB(config *Config) (*sql.DB, error) { db, err := sql.Open("sqlite3", config.Path) if err != nil { return nil, errors.NewDatabaseError("open", err) } // Test connection if err := db.Ping(); err != nil { return nil, errors.NewDatabaseError("ping", err) } // Set connection pool settings db.SetMaxOpenConns(config.MaxOpenConns) db.SetMaxIdleConns(config.MaxIdleConns) db.SetConnMaxLifetime(time.Duration(config.ConnMaxLifetime) * time.Second) // Apply pragmas if specified if len(config.Pragmas) > 0 { for _, pragma := range config.Pragmas { _, err := db.Exec(pragma) if err != nil { return nil, errors.NewDatabaseError("pragma", err) } } } return db, nil }