diff --git a/pkg/datastore/db.go b/pkg/datastore/db.go index a7b09da..2c72c4e 100644 --- a/pkg/datastore/db.go +++ b/pkg/datastore/db.go @@ -6,6 +6,8 @@ import ( _ "embed" "encoding/json" "log" + "os" + "path/filepath" "time" "epigas.gitea.cloud/RiskRancher/core/pkg/domain" @@ -18,9 +20,14 @@ var schemaSQL string //go:embed defaults/*.json var defaultAdaptersFS embed.FS -func InitDB(filepath string) *sql.DB { +func InitDB(dbPath string) *sql.DB { - dsn := "file:" + filepath + "?_pragma=journal_mode(WAL)&_pragma=busy_timeout(5000)&_pragma=synchronous(NORMAL)&_pragma=foreign_keys(1)" + dir := filepath.Dir(dbPath) + + if err := os.MkdirAll(dir, 0755); err != nil { + log.Fatalf("Failed to create database directory: %v", err) + } + dsn := "file:" + dbPath + "?_pragma=journal_mode(WAL)&_pragma=busy_timeout(5000)&_pragma=synchronous(NORMAL)&_pragma=foreign_keys(1)" db, err := sql.Open("sqlite", dsn) if err != nil {