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)