From 64e18cbab5727ba3a6813dafd9dcb036f8ef1798 Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Fri, 6 Mar 2026 22:47:45 +0300 Subject: [PATCH] cache: create parent directory before opening SQLite database Signed-off-by: NotAShelf Change-Id: I935eeccd78986cf40aebafff6d28da746a6a6964 --- internal/cache/db.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/internal/cache/db.go b/internal/cache/db.go index de4dd35..e4fce3c 100644 --- a/internal/cache/db.go +++ b/internal/cache/db.go @@ -3,6 +3,8 @@ package cache import ( "database/sql" "fmt" + "os" + "path/filepath" "strings" "time" @@ -36,7 +38,13 @@ type DB struct { } // Opens or creates the SQLite database at path with WAL mode. +// Creates parent directories as needed (unless path is ":memory:"). func Open(path string, maxEntries int) (*DB, error) { + if path != ":memory:" { + 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+"?_journal=WAL&_busy_timeout=5000") if err != nil { return nil, fmt.Errorf("open sqlite: %w", err)