@antelopejs/dms-database 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +73 -49
  2. package/dist/db/models/diagram_layouts.model.d.ts +1 -0
  3. package/dist/db/models/diagram_notes.model.d.ts +1 -0
  4. package/dist/db/models/query_history.model.d.ts +1 -0
  5. package/dist/db/models/saved_queries.model.d.ts +1 -0
  6. package/dist/routes/data.d.ts +1 -3
  7. package/dist/routes/data.js +6 -1
  8. package/dist/routes/data.js.map +1 -1
  9. package/frontend-vue/app/build/composables/useDataBrowserGrid.ts +4 -38
  10. package/frontend-vue/app/build/composables/useDatabaseHealth.ts +7 -4
  11. package/frontend-vue/app/build/composables/useDatabaseSchemas.ts +1 -2
  12. package/frontend-vue/app/build/composables/useDiagramPersistence.ts +49 -16
  13. package/frontend-vue/app/build/composables/useQueryStore.ts +59 -27
  14. package/frontend-vue/app/build/composables/useTableCounts.ts +50 -0
  15. package/frontend-vue/app/build/data/stagedWrites.ts +46 -6
  16. package/frontend-vue/app/build/data/useStagedSave.ts +42 -12
  17. package/frontend-vue/app/build/query/runs.ts +7 -27
  18. package/frontend-vue/app/build/schemas/useSchemasListing.ts +10 -33
  19. package/frontend-vue/app/components/ConnectionStatus.vue +14 -11
  20. package/frontend-vue/app/components/DataBrowserSidebar.vue +20 -42
  21. package/frontend-vue/app/components/DataBrowserTabBar.vue +1 -1
  22. package/frontend-vue/app/components/DataGrid.vue +73 -91
  23. package/frontend-vue/app/components/InstancePicker.vue +63 -55
  24. package/frontend-vue/app/components/QueryConsole.vue +47 -37
  25. package/frontend-vue/app/components/QueryLibrary.vue +20 -17
  26. package/frontend-vue/app/components/RowDrawer.vue +15 -18
  27. package/frontend-vue/app/components/SchemaDiagram.vue +7 -7
  28. package/frontend-vue/app/components/TableInspector.vue +116 -84
  29. package/frontend-vue/package.json +4 -3
  30. package/frontend-vue/pnpm-lock.yaml +1388 -2803
  31. package/frontend-vue/tests/dataBrowser.test.ts +59 -1
  32. package/frontend-vue/tests/fixtures/inertia.ts +8 -0
  33. package/frontend-vue/tests/fixtures/serverRender.ts +219 -0
  34. package/frontend-vue/tests/fixtures/vueI18n.ts +4 -0
  35. package/frontend-vue/tests/helpers.test.ts +1 -0
  36. package/frontend-vue/tests/locales.test.ts +24 -0
  37. package/frontend-vue/tests/onDemandReads.test.ts +106 -0
  38. package/frontend-vue/tests/serverRender.test.ts +235 -0
  39. package/frontend-vue/vitest.config.ts +24 -0
  40. package/package.json +31 -14
  41. package/skills/dms-database/SKILL.md +35 -0
package/README.md CHANGED
@@ -1,78 +1,102 @@
1
+ <div align="center">
2
+
1
3
  # @antelopejs/dms-database
2
4
 
3
- <div align="center">
4
- <a href="./LICENSE"><img alt="License" src="https://img.shields.io/badge/license-Apache--2.0-blue?style=for-the-badge&labelColor=000000"></a>
5
- <a href="https://discord.gg/sjK28QHrA7"><img src="https://img.shields.io/badge/Discord-18181B?logo=discord&style=for-the-badge&color=000000" alt="Discord"></a>
6
- <a href="https://antelopejs.com"><img src="https://img.shields.io/badge/Docs-18181B?style=for-the-badge&color=000000" alt="Documentation"></a>
5
+ <a href="https://www.npmjs.com/package/@antelopejs/dms-database"><img alt="npm" src="https://img.shields.io/npm/v/@antelopejs/dms-database?style=for-the-badge&labelColor=000000&color=000000"></a>
6
+ <a href="./LICENSE"><img alt="License" src="https://img.shields.io/npm/l/@antelopejs/dms-database?style=for-the-badge&labelColor=000000&color=000000"></a>
7
+ <a href="https://discord.gg/sjK28QHrA7"><img alt="Discord" src="https://img.shields.io/badge/Discord-18181B?logo=discord&style=for-the-badge&color=000000"></a>
8
+ <a href="https://dms.antelopejs.com/docs/modules/database"><img alt="Documentation" src="https://img.shields.io/badge/Docs-18181B?style=for-the-badge&color=000000"></a>
9
+
10
+ The database console of the AntelopeJS DMS: schemas, diagrams, rows and queries.
11
+
7
12
  </div>
8
13
 
9
- Database administration for AntelopeJS DMS. The module uses the Database interface to give the
10
- platform owner, under `/modules/database`:
14
+ ![The Database diagram: the tables and relations of a shop schema](./docs/images/diagram-shop.png)
15
+
16
+ ## What it does
11
17
 
12
- - **Overview**: connection health, one card per registered schema, the largest tables and the
13
- latest queries.
14
- - **Schemas**: every registered table, with a filter bar (schema, instance, table or column name,
15
- structure flags) kept in the URL, and an inspector on the right listing its columns, indexes,
16
- relations (both ways) and a sample row.
17
- - **Diagram**: the tables and relations of a schema. The layout saves itself and is shared by the
18
- team; auto layout is previewed before it is kept.
19
- - **Data browser**: the rows of any table, in any instance or across all of them (read only).
20
- Edits are staged, reviewed and written only when saved, and a save can be undone for a few
21
- seconds.
18
+ - Checks the connection and its latency, with one card per registered schema and the largest tables.
19
+ - Lists every table the loaded modules register, with its columns, indexes, relations and a sample row.
20
+ - Draws the tables and relations of a schema, with a layout and notes shared by the whole team.
21
+ - Browses and fixes rows in any instance: edits are staged, reviewed, saved, and can be undone for ten seconds.
22
+ - Runs AQL queries with completion and history, and a dry run before any query that writes.
22
23
 
23
- Links between the pages carry the instance in an `instance` query key: absent for the default
24
- instance, `all` for every instance, otherwise the instance's name.
25
- - **Query console**: AQL with completion of the workspace's schemas, a library of past, saved and
26
- shared queries, and a dry run before any query that changes data.
24
+ A saved row shows in place; the page is read again when a save may move rows (a sorted or filtered field, or a search).
27
25
 
28
- The module requires `@antelopejs/dms` 0.7.2 or later and `@antelopejs/dms-frontend` 0.5.2.
26
+ The pages and the module's API answer to the platform owner only.
29
27
 
30
- ## Installation
28
+ ## Install
31
29
 
32
- Add the module to a project that already uses `@antelopejs/dms` and a Database implementation:
30
+ Run the AntelopeJS CLI from the root of a project that already loads `@antelopejs/dms`:
33
31
 
34
32
  ```bash
35
33
  ajs project modules add @antelopejs/dms-database
36
34
  ```
37
35
 
38
- ## Configuration
36
+ ## Quick start
39
37
 
40
- Configuration is optional. `driverLabel` supplies the database name shown in the health overview;
41
- the Database interface cannot discover it. `schemaLabels` overrides labels for exact schema IDs or
42
- glob patterns containing `*`.
38
+ The module works without configuration. To show the database name on the Overview and label your schemas, add a `config` block:
43
39
 
44
- ```typescript
45
- config: {
46
- driverLabel: "MongoDB 8.0",
47
- schemaLabels: {
48
- "app-*": { label: "Application", color: "info" },
40
+ ```ts
41
+ // antelope.config.ts
42
+ "dms-database": {
43
+ source: { type: "package", package: "@antelopejs/dms-database", version: ">=0.2.0 <1.0.0" },
44
+ config: {
45
+ driverLabel: "MongoDB 8.0",
46
+ schemaLabels: {
47
+ "app-*": { label: "Application", color: "info" },
48
+ },
49
49
  },
50
- }
50
+ },
51
51
  ```
52
52
 
53
- ## Development
53
+ Restart the backend, then the frontend, sign in as the platform owner and open **Modules → Database** (`/modules/database/overview`).
54
+
55
+ ## Compatibility
56
+
57
+ | Package | Version |
58
+ | --- | --- |
59
+ | `@antelopejs/dms` | `>=0.9.0 <1.0.0` |
60
+ | `@antelopejs/interface-dms` | `>=0.7.0 <1.0.0` |
61
+ | `@antelopejs/dms-frontend` (renderer) | `>=0.6.0 <0.7.0` |
62
+ | Database | an `@antelopejs/interface-database` implementation, such as `@antelopejs/mongodb` |
63
+
64
+ On DMS 0.8, use `@antelopejs/dms-database` 0.1.
65
+
66
+ ## Documentation
67
+
68
+ - [Introduction](https://dms.antelopejs.com/docs/modules/database/introduction)
69
+ - [Installation](https://dms.antelopejs.com/docs/modules/database/installation)
70
+ - [Configuration](https://dms.antelopejs.com/docs/modules/database/configuration)
71
+ - [Usage](https://dms.antelopejs.com/docs/modules/database/usage/overview)
72
+ - [Extending](https://dms.antelopejs.com/docs/modules/database/extending)
73
+ - [FAQ](https://dms.antelopejs.com/docs/modules/database/faq)
74
+
75
+ The canonical guide lives in [`docs/`](./docs), including the [supported extension boundary](./docs/5.extending.md#supported-extension-boundary). There is no separate DMS Database interface package. The package also ships the `dms-database` Claude Code skill in [`skills/`](./skills), declared under `antelopeJs.skills`.
76
+
77
+ ## Contributing
78
+
79
+ Read [CONTRIBUTING.md](./CONTRIBUTING.md) before opening a pull request. The playground registers a `demo` schema and a `shop` schema with `eu` and `us` instances, seeded on first start.
54
80
 
55
81
  ```bash
56
82
  pnpm install
57
- pnpm build
83
+ pnpm dev # playground backend
84
+ pnpm frontend:dev # dashboard, in a second terminal
85
+ pnpm lint
86
+ pnpm typecheck
58
87
  pnpm test
59
88
  ```
60
89
 
61
- The module registers its Vue 3 frontend through `frontend-vue/dms.frontend.ts`, under the
62
- `DmsDatabase` component prefix: `app/components/DataBrowser.vue` is the `DmsDatabaseDataBrowser`
63
- the backend page names. The pages themselves are declared in `src/pages`, as DMS blocks plus the
64
- module's own components. Everything under `frontend-vue/app/build` is private to the layer and
65
- imported by path.
90
+ <details>
91
+ <summary>Repository notes</summary>
66
92
 
67
- The playground (`pnpm dev`, then `pnpm frontend:dev`) registers a `demo` schema
68
- and a `shop` schema with `eu` and `us` instances, seeded on first start.
93
+ - The module registers its Vue 3 frontend through `frontend-vue/dms.frontend.ts`, under the `DmsDatabase` component prefix: `app/components/DataBrowser.vue` is the `DmsDatabaseDataBrowser` the backend page names. The pages are declared in `src/pages`, as DMS blocks plus the module's own components. Everything under `frontend-vue/app/build` is private to the layer and imported by path.
94
+ - Run `pnpm --dir frontend-vue install` and `pnpm --dir frontend-vue test` for the frontend tests. Set `DMS_FRONTEND_WORKSPACE` to a generated Inertia workspace before running `pnpm --dir frontend-vue typecheck`.
95
+ - `DMS_SOURCE=/absolute/path/to/dms pnpm test` tests against a local DMS runtime with disposable MongoDB and filesystem storage. Only the test harness loads that runtime; the types come from `@antelopejs/interface-dms`.
96
+ - `docs/design/redesign-v2-grill.md` records the decisions behind the v2 redesign.
69
97
 
70
- `docs/redesign-v2-grill.md` records the decisions behind the v2 redesign.
98
+ </details>
71
99
 
72
- Run `pnpm --dir frontend-vue install` and `pnpm --dir frontend-vue test` for frontend tests. Set
73
- `DMS_FRONTEND_WORKSPACE` to a generated Inertia workspace before running
74
- `pnpm --dir frontend-vue typecheck`.
100
+ ## License
75
101
 
76
- Run `DMS_SOURCE=/absolute/path/to/dms pnpm test` to test a local DMS runtime with disposable MongoDB
77
- and filesystem storage. Only the test harness loads the runtime; the types come from
78
- `@antelopejs/interface-dms`, so `pnpm typecheck` is unaffected by that path.
102
+ [Apache-2.0](./LICENSE)
@@ -13,6 +13,7 @@ declare const DiagramLayoutModel_base: {
13
13
  delete(id: string): Promise<number>;
14
14
  };
15
15
  readonly schemaName: string;
16
+ readonly tableClass: import("@antelopejs/interface-database-decorators").Constructible<DiagramLayout>;
16
17
  fromPlainData(obj: any): DiagramLayout;
17
18
  fromDatabase(obj: any): DiagramLayout | undefined;
18
19
  toDatabase(obj: any): Record<string, any>;
@@ -12,6 +12,7 @@ declare const DiagramNoteModel_base: {
12
12
  delete(id: string): Promise<number>;
13
13
  };
14
14
  readonly schemaName: string;
15
+ readonly tableClass: import("@antelopejs/interface-database-decorators").Constructible<DiagramNote>;
15
16
  fromPlainData(obj: any): DiagramNote;
16
17
  fromDatabase(obj: any): DiagramNote | undefined;
17
18
  toDatabase(obj: any): Record<string, any>;
@@ -13,6 +13,7 @@ declare const QueryHistoryModel_base: {
13
13
  delete(id: string): Promise<number>;
14
14
  };
15
15
  readonly schemaName: string;
16
+ readonly tableClass: import("@antelopejs/interface-database-decorators").Constructible<QueryHistoryRow>;
16
17
  fromPlainData(obj: any): QueryHistoryRow;
17
18
  fromDatabase(obj: any): QueryHistoryRow | undefined;
18
19
  toDatabase(obj: any): Record<string, any>;
@@ -12,6 +12,7 @@ declare const SavedQueryModel_base: {
12
12
  delete(id: string): Promise<number>;
13
13
  };
14
14
  readonly schemaName: string;
15
+ readonly tableClass: import("@antelopejs/interface-database-decorators").Constructible<SavedQueryRow>;
15
16
  fromPlainData(obj: any): SavedQueryRow;
16
17
  fromDatabase(obj: any): SavedQueryRow | undefined;
17
18
  toDatabase(obj: any): Record<string, any>;
@@ -26,8 +26,6 @@ export declare class DatabaseBrowseController extends DatabaseBrowseController_b
26
26
  tables(_user: User, schemaFilter: unknown, instanceFilter: unknown): Promise<ListResult<BrowseTableEntry>>;
27
27
  references(_user: User, schemaFilter: unknown, instanceFilter: unknown, tableFilter: unknown, idRaw: unknown): Promise<ListResult<RowReference>>;
28
28
  get(_user: User, schemaFilter: unknown, instanceFilter: unknown, tableFilter: unknown, idRaw: unknown): Promise<any>;
29
- edit(_user: User, schemaFilter: unknown, instanceFilter: unknown, tableFilter: unknown, idRaw: unknown, body: Record<string, unknown>): Promise<{
30
- [x: string]: unknown;
31
- }>;
29
+ edit(_user: User, schemaFilter: unknown, instanceFilter: unknown, tableFilter: unknown, idRaw: unknown, body: Record<string, unknown>): Promise<any>;
32
30
  }
33
31
  export {};
@@ -296,7 +296,12 @@ let DatabaseBrowseController = class DatabaseBrowseController extends (0, interf
296
296
  const primaryKey = (0, introspect_1.getTablePrimaryKey)(selection.schema, selection.table);
297
297
  const updates = buildEditUpdates(current, body, primaryKey);
298
298
  if (Object.keys(updates).length > 0) {
299
- await target.update(updates).run();
299
+ const changed = await target.update(updates).run();
300
+ if (changed === 0) {
301
+ const persisted = await target;
302
+ (0, interface_api_util_1.assert)(persisted && typeof persisted === "object", 404, "Row not found");
303
+ return persisted;
304
+ }
300
305
  }
301
306
  return { ...current, ...updates };
302
307
  }
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/routes/data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/routes/data.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { type BrowserTab, DEFAULT_INSTANCE_VALUE } from './useDataBrowserTabs'
2
- // Per-tab grid state (paging, sort, filters, column widths) and a data cache
3
- // so switching tabs restores instantly without a refetch. Keyed by
4
- // BrowserTab.id.
2
+ // Per-tab grid state (paging, sort, filters, column widths), keyed by
3
+ // BrowserTab.id. The rows themselves are `useApiData`'s: a tab switched back
4
+ // to shows its last page at once and reads it again.
5
5
 
6
6
  export interface ColumnFilterState {
7
7
  mode: 'is' | 'contains'
@@ -31,9 +31,6 @@ export interface GridData {
31
31
  rows: Record<string, unknown>[]
32
32
  total: number
33
33
  primaryKey: string | null
34
- // Serialised query parameters that produced this payload; lets the grid
35
- // skip refetching when nothing changed.
36
- paramsKey: string
37
34
  }
38
35
 
39
36
  export const GRID_PAGE_SIZES = [25, 50, 100, 200]
@@ -55,32 +52,15 @@ export function useDataBrowserGrid() {
55
52
  'dms-database-grid-states',
56
53
  () => ({}),
57
54
  )
58
- const cache = useDmsState<Record<string, GridData>>(
59
- 'dms-database-grid-cache',
60
- () => ({}),
61
- )
62
55
 
63
56
  function getState(tabId: string): GridState {
64
57
  if (!states.value[tabId]) states.value[tabId] = defaultGridState()
65
58
  return states.value[tabId]
66
59
  }
67
60
 
68
- function getCache(tabId: string): GridData | null {
69
- return cache.value[tabId] ?? null
70
- }
71
-
72
- function setCache(tabId: string, data: GridData) {
73
- cache.value[tabId] = data
74
- }
75
-
76
- function invalidate(tabId: string) {
77
- Reflect.deleteProperty(cache.value, tabId)
78
- }
79
-
80
61
  // Forget everything about a closed tab.
81
62
  function drop(tabId: string) {
82
63
  Reflect.deleteProperty(states.value, tabId)
83
- Reflect.deleteProperty(cache.value, tabId)
84
64
  }
85
65
 
86
66
  // A tab switched to another instance keeps what the user narrowed the
@@ -94,10 +74,9 @@ export function useDataBrowserGrid() {
94
74
  columnWidths: { ...from.columnWidths },
95
75
  page: 0,
96
76
  }
97
- Reflect.deleteProperty(cache.value, toId)
98
77
  }
99
78
 
100
- return { getState, getCache, setCache, invalidate, drop, carry }
79
+ return { getState, drop, carry }
101
80
  }
102
81
 
103
82
  // --- query helpers shared by the grid ---
@@ -162,16 +141,3 @@ export function browseListQuery(
162
141
  }
163
142
  return query
164
143
  }
165
-
166
- // Everything that changes the server payload (column widths deliberately not).
167
- export function browseParamsKey(tab: BrowserTab, state: GridState): string {
168
- return JSON.stringify([
169
- tab.id,
170
- state.page,
171
- state.pageSize,
172
- state.sortKey,
173
- state.sortDirection,
174
- state.search,
175
- activeFilterEntries(state),
176
- ])
177
- }
@@ -34,11 +34,14 @@ const EMPTY_HEALTH: OverviewHealth = {
34
34
  storage: [],
35
35
  }
36
36
 
37
- export function useDatabaseHealth() {
38
- const { useFetchAuth } = useAuthFetch()
39
- const { data, pending, error, refresh } = useFetchAuth<OverviewHealth>(
37
+ /** `refreshInterval` probes again on that interval while the page shows it. */
38
+ export function useDatabaseHealth(options: { refreshInterval?: number } = {}) {
39
+ const { data, pending, error, refresh } = useApiData<OverviewHealth>(
40
40
  HEALTH_ENDPOINT,
41
- { default: () => ({ ...EMPTY_HEALTH }) },
41
+ {
42
+ default: () => ({ ...EMPTY_HEALTH }),
43
+ refreshInterval: options.refreshInterval,
44
+ },
42
45
  )
43
46
 
44
47
  return {
@@ -110,8 +110,7 @@ export function inboundRelationsIn(
110
110
  }
111
111
 
112
112
  export function useDatabaseSchemas() {
113
- const { useFetchAuth } = useAuthFetch()
114
- const { data, pending, error, status, refresh } = useFetchAuth<{
113
+ const { data, pending, error, status, refresh } = useApiData<{
115
114
  schemas: SchemaSummary[]
116
115
  }>(SCHEMAS_ENDPOINT, { default: () => EMPTY_SCHEMAS })
117
116
 
@@ -32,6 +32,13 @@ export type DiagramNoteUpdate = Partial<
32
32
  Pick<DiagramNote, 'text' | 'x' | 'y' | 'width' | 'height' | 'color'>
33
33
  >
34
34
 
35
+ /** A schema's diagram as stored: its layout and its notes. */
36
+ export interface StoredDiagram {
37
+ schema: string
38
+ positions: DiagramPositions
39
+ notes: DiagramNote[]
40
+ }
41
+
35
42
  const BASE = '/api/database/diagram'
36
43
  // A request that hangs fails after this (ofetch's own `timeout`), so the
37
44
  // canvas shows the error and its "Try again" instead of "Saving…" forever.
@@ -40,12 +47,47 @@ const REQUEST_TIMEOUT_MS = 15_000
40
47
  export function useDiagramPersistence() {
41
48
  const { $authFetch } = useAuthFetch()
42
49
 
43
- async function fetchLayout(schema: string): Promise<DiagramPositions> {
44
- const res = await $authFetch<{ positions: DiagramPositions }>(
45
- `${BASE}/layout/${encodeURIComponent(schema)}`,
46
- { timeout: REQUEST_TIMEOUT_MS },
47
- )
48
- return res.positions ?? {}
50
+ // The schema whose diagram is read: in the browser only, when the canvas
51
+ // asks, since it draws and edits a working copy of it.
52
+ const readSchema = shallowRef<string | null>(null)
53
+ const stored = useApiData<StoredDiagram>(
54
+ () =>
55
+ readSchema.value ? `dms-database:diagram:${readSchema.value}` : null,
56
+ async ({ $authFetch: read, signal }) => {
57
+ const schema = readSchema.value as string
58
+ const [layout, notes] = await Promise.all([
59
+ read<{ positions: DiagramPositions }>(
60
+ `${BASE}/layout/${encodeURIComponent(schema)}`,
61
+ { timeout: REQUEST_TIMEOUT_MS, signal },
62
+ ),
63
+ read<{ items: DiagramNote[] }>(`${BASE}/notes`, {
64
+ query: { schema },
65
+ timeout: REQUEST_TIMEOUT_MS,
66
+ signal,
67
+ }),
68
+ ])
69
+ return {
70
+ schema,
71
+ positions: layout.positions ?? {},
72
+ notes: notes.items ?? [],
73
+ }
74
+ },
75
+ {
76
+ immediate: false,
77
+ server: false,
78
+ watch: false,
79
+ refreshOnPageRefresh: false,
80
+ },
81
+ )
82
+
83
+ /** Reads a schema's layout and notes; throws when they cannot be read. */
84
+ async function readDiagram(schema: string): Promise<StoredDiagram> {
85
+ readSchema.value = schema
86
+ await stored.execute()
87
+ const diagram = stored.data.value
88
+ if (stored.error.value || diagram?.schema !== schema)
89
+ throw stored.error.value ?? new Error('Diagram not read')
90
+ return diagram
49
91
  }
50
92
 
51
93
  async function saveLayout(
@@ -62,14 +104,6 @@ export function useDiagramPersistence() {
62
104
  )
63
105
  }
64
106
 
65
- async function fetchNotes(schema: string): Promise<DiagramNote[]> {
66
- const res = await $authFetch<{ items: DiagramNote[] }>(`${BASE}/notes`, {
67
- query: { schema },
68
- timeout: REQUEST_TIMEOUT_MS,
69
- })
70
- return res.items ?? []
71
- }
72
-
73
107
  async function createNote(payload: DiagramNoteCreate): Promise<DiagramNote> {
74
108
  return $authFetch<DiagramNote>(`${BASE}/notes`, {
75
109
  method: 'POST',
@@ -97,9 +131,8 @@ export function useDiagramPersistence() {
97
131
  }
98
132
 
99
133
  return {
100
- fetchLayout,
134
+ readDiagram,
101
135
  saveLayout,
102
- fetchNotes,
103
136
  createNote,
104
137
  updateNote,
105
138
  deleteNote,
@@ -1,5 +1,4 @@
1
1
  export type QueryLanguage = 'aql'
2
- export type QueryScope = 'me' | 'shared'
3
2
 
4
3
  export interface SavedQuery {
5
4
  id: string
@@ -68,31 +67,61 @@ import { HISTORY_KEPT } from '../query/runs'
68
67
 
69
68
  const QUERY_BASE = '/api/database/query'
70
69
 
70
+ /**
71
+ * The query console's library and requests. The library (the caller's saved
72
+ * queries, the team's shared ones, the runs the server keeps) is read as the
73
+ * console sets up: a server render reads it and hands it over with the page.
74
+ * Every write is a request of its own, after which the console refreshes
75
+ * the part of the library it changed.
76
+ */
71
77
  export function useQueryStore() {
72
78
  const { $authFetch } = useAuthFetch()
73
79
 
74
- const savedQueries = ref<SavedQuery[]>([])
75
- const historyItems = ref<HistoryEntry[]>([])
76
-
77
- async function fetchSaved(scope: QueryScope): Promise<void> {
78
- const response = await $authFetch<{ items: SavedQuery[] }>(
79
- `${QUERY_BASE}/saved`,
80
- { query: { scope } },
81
- )
82
- savedQueries.value = response.items ?? []
80
+ const saved = useApiData<{ items: SavedQuery[] }>(`${QUERY_BASE}/saved`, {
81
+ query: { scope: 'me' },
82
+ })
83
+ const shared = useApiData<{ items: SavedQuery[] }>(`${QUERY_BASE}/saved`, {
84
+ query: { scope: 'shared' },
85
+ })
86
+ const history = useApiData<{ items: HistoryEntry[] }>(
87
+ `${QUERY_BASE}/history`,
88
+ { query: { limit: HISTORY_KEPT } },
89
+ )
90
+ const reads = [saved, shared, history]
91
+
92
+ /** The saved queries and the shared ones, read again. */
93
+ async function refreshSaved(): Promise<void> {
94
+ await Promise.all([saved.refresh(), shared.refresh()])
83
95
  }
84
96
 
97
+ // A run a link names (`?history=`), read when the console opens it.
98
+ const entryId = shallowRef<string | null>(null)
99
+ const entry = useApiData<HistoryEntry>(
100
+ () =>
101
+ entryId.value
102
+ ? `${QUERY_BASE}/history/${encodeURIComponent(entryId.value)}`
103
+ : null,
104
+ {
105
+ immediate: false,
106
+ server: false,
107
+ watch: false,
108
+ refreshOnPageRefresh: false,
109
+ },
110
+ )
111
+
85
112
  async function fetchHistoryEntry(id: string): Promise<HistoryEntry> {
86
- return $authFetch<HistoryEntry>(
87
- `${QUERY_BASE}/history/${encodeURIComponent(id)}`,
88
- )
113
+ entryId.value = id
114
+ await entry.execute()
115
+ if (entry.error.value || !entry.data.value)
116
+ throw entry.error.value ?? new Error('History entry not read')
117
+ return entry.data.value
89
118
  }
90
119
 
91
120
  async function clearHistory(): Promise<void> {
92
121
  await $authFetch<{ success: boolean }>(`${QUERY_BASE}/history`, {
93
122
  method: 'DELETE',
94
123
  })
95
- historyItems.value = []
124
+ history.data.value = { items: [] }
96
125
  }
97
126
 
98
127
  async function dryRun(query: Record<string, unknown>): Promise<DryRunResult> {
@@ -102,15 +131,6 @@ export function useQueryStore() {
102
131
  })
103
132
  }
104
133
 
105
- /** Every run the server keeps, at once. */
106
- async function fetchHistory(): Promise<void> {
107
- const response = await $authFetch<{ items: HistoryEntry[] }>(
108
- `${QUERY_BASE}/history`,
109
- { query: { limit: HISTORY_KEPT } },
110
- )
111
- historyItems.value = response.items ?? []
112
- }
113
-
114
134
  async function executeQuery(
115
135
  query: Record<string, unknown>,
116
136
  source: string,
@@ -147,10 +167,22 @@ export function useQueryStore() {
147
167
  }
148
168
 
149
169
  return {
150
- savedQueries,
151
- historyItems,
152
- fetchSaved,
153
- fetchHistory,
170
+ /** The caller's saved queries. A failed refresh keeps the last list. */
171
+ savedQueries: computed(() => saved.data.value?.items ?? []),
172
+ /** The queries shared with the team, the caller's own included. */
173
+ sharedQueries: computed(() => shared.data.value?.items ?? []),
174
+ /** Every run the server keeps, newest first. */
175
+ historyItems: computed(() => history.data.value?.items ?? []),
176
+ /** The library's first read is still running. */
177
+ libraryLoading: computed(() =>
178
+ reads.some(
179
+ (read) => read.data.value === null && read.status.value !== 'error',
180
+ ),
181
+ ),
182
+ /** Settles once the library's first read did, failed or not. */
183
+ libraryRead: Promise.all(reads).then(() => undefined),
184
+ refreshSaved,
185
+ refreshHistory: () => history.refresh(),
154
186
  fetchHistoryEntry,
155
187
  clearHistory,
156
188
  dryRun,