From a616a21c040f1cf05aa5b9a30e80a4c0de7eea28 Mon Sep 17 00:00:00 2001 From: Virgil Date: Fri, 3 Apr 2026 08:49:45 +0000 Subject: [PATCH] refactor(store): expose workspace database path Add a semantic accessor for the workspace backing file and cover it with a test. Co-Authored-By: Virgil --- workspace.go | 10 +++++++++- workspace_test.go | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/workspace.go b/workspace.go index bcaac4a..e6b46b6 100644 --- a/workspace.go +++ b/workspace.go @@ -32,7 +32,7 @@ FROM workspace_entries` var defaultWorkspaceStateDirectory = ".core/state" -// Workspace buffers mutable work-in-progress in a temporary SQLite file. +// Workspace buffers mutable work-in-progress in a temporary database file. // // Usage example: `workspace, err := storeInstance.NewWorkspace("scroll-session-2026-03-30"); if err != nil { return }; defer workspace.Discard()` type Workspace struct { @@ -54,6 +54,14 @@ func (workspace *Workspace) Name() string { return workspace.name } +// Usage example: `workspacePath := workspace.DatabasePath(); fmt.Println(workspacePath)` +func (workspace *Workspace) DatabasePath() string { + if workspace == nil { + return "" + } + return workspace.databasePath +} + func (workspace *Workspace) ensureReady(operation string) error { if workspace == nil { return core.E(operation, "workspace is nil", nil) diff --git a/workspace_test.go b/workspace_test.go index 3ea498f..78303e5 100644 --- a/workspace_test.go +++ b/workspace_test.go @@ -40,6 +40,20 @@ func TestWorkspace_NewWorkspace_Good_CreatePutAggregateQuery(t *testing.T) { assert.Equal(t, int64(1), rows[1]["entry_count"]) } +func TestWorkspace_DatabasePath_Good(t *testing.T) { + stateDirectory := useWorkspaceStateDirectory(t) + + storeInstance, err := New(":memory:") + require.NoError(t, err) + defer storeInstance.Close() + + workspace, err := storeInstance.NewWorkspace("scroll-session") + require.NoError(t, err) + defer workspace.Discard() + + assert.Equal(t, workspaceFilePath(stateDirectory, "scroll-session"), workspace.DatabasePath()) +} + func TestWorkspace_Query_Good_RFCEntriesView(t *testing.T) { useWorkspaceStateDirectory(t)