[agent/codex:gpt-5.4] Implement docs/RFC-STORE.md using docs/RFC-CORE-008-AGENT-EX... #28
2 changed files with 38 additions and 0 deletions
12
workspace.go
12
workspace.go
|
|
@ -21,6 +21,14 @@ const createWorkspaceEntriesTableSQL = `CREATE TABLE IF NOT EXISTS workspace_ent
|
|||
created_at INTEGER NOT NULL
|
||||
)`
|
||||
|
||||
const createWorkspaceEntriesViewSQL = `CREATE VIEW IF NOT EXISTS entries AS
|
||||
SELECT
|
||||
entry_id AS id,
|
||||
entry_kind AS kind,
|
||||
entry_data AS data,
|
||||
created_at
|
||||
FROM workspace_entries`
|
||||
|
||||
var defaultWorkspaceStateDirectory = ".core/state"
|
||||
|
||||
// Workspace accumulates mutable work-in-progress entries before they are
|
||||
|
|
@ -307,6 +315,10 @@ func openWorkspaceDatabase(databasePath string) (*sql.DB, error) {
|
|||
workspaceDatabase.Close()
|
||||
return nil, err
|
||||
}
|
||||
if _, err := workspaceDatabase.Exec(createWorkspaceEntriesViewSQL); err != nil {
|
||||
workspaceDatabase.Close()
|
||||
return nil, err
|
||||
}
|
||||
return workspaceDatabase, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -39,6 +39,32 @@ func TestWorkspace_NewWorkspace_Good_CreatePutAggregateQuery(t *testing.T) {
|
|||
assert.Equal(t, int64(1), rows[1]["entry_count"])
|
||||
}
|
||||
|
||||
func TestWorkspace_Query_Good_RFCEntriesView(t *testing.T) {
|
||||
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()
|
||||
|
||||
require.NoError(t, workspace.Put("like", map[string]any{"user": "@alice"}))
|
||||
require.NoError(t, workspace.Put("like", map[string]any{"user": "@bob"}))
|
||||
require.NoError(t, workspace.Put("profile_match", map[string]any{"user": "@charlie"}))
|
||||
|
||||
rows := requireResultRows(
|
||||
t,
|
||||
workspace.Query("SELECT kind, COUNT(*) AS entry_count FROM entries GROUP BY kind ORDER BY kind"),
|
||||
)
|
||||
require.Len(t, rows, 2)
|
||||
assert.Equal(t, "like", rows[0]["kind"])
|
||||
assert.Equal(t, int64(2), rows[0]["entry_count"])
|
||||
assert.Equal(t, "profile_match", rows[1]["kind"])
|
||||
assert.Equal(t, int64(1), rows[1]["entry_count"])
|
||||
}
|
||||
|
||||
func TestWorkspace_Commit_Good_JournalAndSummary(t *testing.T) {
|
||||
useWorkspaceStateDirectory(t)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue