diff --git a/dendrite b/dendrite index a42ce71..a53eca9 100755 Binary files a/dendrite and b/dendrite differ diff --git a/persistence/db_dir.go b/persistence/db_dir.go new file mode 100644 index 0000000..c9ecfd7 --- /dev/null +++ b/persistence/db_dir.go @@ -0,0 +1,19 @@ +package persistence + +import ( + "os" + "path/filepath" +) + +func getIndexDBPath(vaultPath string) (string, error) { + dir := os.Getenv("XDG_DATA_HOME") + if dir == "" { + home, err := os.UserHomeDir() + if err != nil { + return "", err + } + dir = filepath.Join(home, ".local", "share") + } + + return filepath.Join(dir, "dendrite", vaultPath), nil +} diff --git a/persistence/db_migrator.go b/persistence/db_migrator.go index 1ddc700..37da0c3 100644 --- a/persistence/db_migrator.go +++ b/persistence/db_migrator.go @@ -13,9 +13,13 @@ import ( var migrationsFS embed.FS func InitializeIndex(vaultPath string) (*sql.DB, error) { - indexDir := filepath.Join(vaultPath, ".index") + indexDir, err := getIndexDBPath(vaultPath) + if err != nil { + slog.Error("failed to get index directory path", "error", err) + return nil, err + } - if err := os.MkdirAll(indexDir, 0755); err != nil { + if err = os.MkdirAll(indexDir, 0755); err != nil { slog.Error("failed to create index directory", "error", err) return nil, err }