package store import ( "database/sql" "fmt" "os" "path/filepath" _ "modernc.org/sqlite" "git.cloudinit.dev/coreci/orca/internal/certpaths" ) func Open(path string) (*sql.DB, error) { if path == "" { path = certpaths.DBPath() } if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil { return nil, fmt.Errorf("create db dir: %w", err) } db, err := sql.Open("sqlite", path+"?_pragma=journal_mode(WAL)&_pragma=foreign_keys(ON)") if err != nil { return nil, fmt.Errorf("open sqlite: %w", err) } if err := db.Ping(); err != nil { _ = db.Close() return nil, fmt.Errorf("ping sqlite: %w", err) } if err := migrate(db); err != nil { _ = db.Close() return nil, fmt.Errorf("migrate: %w", err) } return db, nil }