sqlite.go 606 B

123456789101112131415161718192021222324252627282930
  1. package database
  2. import (
  3. "database/sql"
  4. "git.linuxforward.com/byom/byom-golang-lib/pkg/errors"
  5. _ "github.com/mattn/go-sqlite3"
  6. )
  7. type SQLiteConfig struct {
  8. Path string
  9. }
  10. func NewSQLiteDB(config SQLiteConfig) (*sql.DB, error) {
  11. db, err := sql.Open("sqlite3", config.Path)
  12. if err != nil {
  13. return nil, errors.NewDatabaseError("open", err)
  14. }
  15. // Test connection
  16. if err := db.Ping(); err != nil {
  17. return nil, errors.NewDatabaseError("ping", err)
  18. }
  19. // Set connection pool settings
  20. db.SetMaxOpenConns(1) // SQLite supports only one writer at a time
  21. db.SetMaxIdleConns(1)
  22. return db, nil
  23. }