@antelopejs/dms-database 0.2.0 → 0.2.2

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.
package/README.md CHANGED
@@ -1,78 +1,104 @@
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.9 (`@antelopejs/interface-dms` 0.7) and `@antelopejs/dms-frontend` 0.6.
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.
80
+
81
+ One root install includes the backend and shipped Vue module, retaining their separate lockfiles. The playground remains independent: run `pnpm --dir playground install --ignore-workspace --frozen-lockfile` before starting it. Use the root scripts below rather than recursive scripts: frontend `build` and `typecheck` need the playground or a generated Inertia workspace, and root lint already checks the Vue module.
54
82
 
55
83
  ```bash
56
84
  pnpm install
57
- pnpm build
85
+ pnpm dev # playground backend
86
+ pnpm frontend:dev # dashboard, in a second terminal
87
+ pnpm lint
88
+ pnpm typecheck
58
89
  pnpm test
59
90
  ```
60
91
 
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.
92
+ <details>
93
+ <summary>Repository notes</summary>
66
94
 
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.
95
+ - 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.
96
+ - Run `pnpm test:layer` for the frontend tests and `pnpm test:frontend` to build and typecheck a generated Inertia app. Set `DMS_FRONTEND_WORKSPACE` to a generated Inertia workspace before running `pnpm --dir frontend-vue typecheck`.
97
+ - `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`.
98
+ - `docs/design/redesign-v2-grill.md` records the decisions behind the v2 redesign.
69
99
 
70
- `docs/redesign-v2-grill.md` records the decisions behind the v2 redesign.
100
+ </details>
71
101
 
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`.
102
+ ## License
75
103
 
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.
104
+ [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>;
package/dist/module.js CHANGED
@@ -26,7 +26,6 @@ exports.databaseModule = (0, page_1.RegisterModule)({
26
26
  landingPage: "overview",
27
27
  version: readVersion(),
28
28
  catalogCategory: "$dms_database.catalog_category",
29
- status: () => "beta",
30
29
  readout: (context) => (0, catalog_1.readCatalogReadout)(context.user),
31
30
  });
32
31
  exports.exploreSection = (0, page_1.Category)("explore", {
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;AAAA,qCAAuC;AACvC,0DAA6B;AAC7B,yDAA0E;AAC1E,+CAAuD;AAE1C,QAAA,kBAAkB,GAAG,UAAU,CAAC;AAO7C,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAA,sBAAY,EAC3B,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EACvC,MAAM,CACP,CAAC;QACF,OAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAqB,CAAC,OAAO,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAGY,QAAA,cAAc,GAAG,IAAA,qBAAc,EAAC;IAC3C,EAAE,EAAE,0BAAkB;IACtB,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EAAE,2BAA2B;IACxC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,WAAW,EAAE;IACtB,eAAe,EAAE,gCAAgC;IAGjD,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM;IACpB,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,4BAAkB,EAAC,OAAO,CAAC,IAAI,CAAC;CACvD,CAAC,CAAC;AAIU,QAAA,cAAc,GAAG,IAAA,eAAQ,EAAC,SAAS,EAAE;IAChD,WAAW,EAAE,2BAA2B;IACxC,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,sBAAc;IACxB,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,GAAG;CACb,CAAC,CAAC;AAEU,QAAA,WAAW,GAAG,IAAA,eAAQ,EAAC,MAAM,EAAE;IAC1C,WAAW,EAAE,wBAAwB;IACrC,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,sBAAc;IACxB,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,GAAG;CACb,CAAC,CAAC;AAGU,QAAA,cAAc,GAAG;IAC5B,QAAQ,EAAE,4BAA4B;IACtC,OAAO,EAAE,2BAA2B;IACpC,OAAO,EAAE,2BAA2B;IACpC,IAAI,EAAE,wBAAwB;IAC9B,KAAK,EAAE,yBAAyB;CACxB,CAAC"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;AAAA,qCAAuC;AACvC,0DAA6B;AAC7B,yDAA0E;AAC1E,+CAAuD;AAE1C,QAAA,kBAAkB,GAAG,UAAU,CAAC;AAO7C,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAA,sBAAY,EAC3B,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EACvC,MAAM,CACP,CAAC;QACF,OAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAqB,CAAC,OAAO,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAGY,QAAA,cAAc,GAAG,IAAA,qBAAc,EAAC;IAC3C,EAAE,EAAE,0BAAkB;IACtB,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EAAE,2BAA2B;IACxC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,WAAW,EAAE;IACtB,eAAe,EAAE,gCAAgC;IACjD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,4BAAkB,EAAC,OAAO,CAAC,IAAI,CAAC;CACvD,CAAC,CAAC;AAIU,QAAA,cAAc,GAAG,IAAA,eAAQ,EAAC,SAAS,EAAE;IAChD,WAAW,EAAE,2BAA2B;IACxC,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,sBAAc;IACxB,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,GAAG;CACb,CAAC,CAAC;AAEU,QAAA,WAAW,GAAG,IAAA,eAAQ,EAAC,MAAM,EAAE;IAC1C,WAAW,EAAE,wBAAwB;IACrC,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,sBAAc;IACxB,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,GAAG;CACb,CAAC,CAAC;AAGU,QAAA,cAAc,GAAG;IAC5B,QAAQ,EAAE,4BAA4B;IACtC,OAAO,EAAE,2BAA2B;IACpC,OAAO,EAAE,2BAA2B;IACpC,IAAI,EAAE,wBAAwB;IAC9B,KAAK,EAAE,yBAAyB;CACxB,CAAC"}
@@ -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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"}
@@ -20,11 +20,11 @@ function statusOf(error: unknown): number | undefined {
20
20
  return failure?.statusCode ?? failure?.status
21
21
  }
22
22
 
23
- export async function writeRows(
23
+ export async function writeRows<T = unknown>(
24
24
  rows: Iterable<[string, Record<string, unknown>]>,
25
- write: (rowId: string, body: Record<string, unknown>) => Promise<unknown>,
26
- /** Called once a row is settled: written, or gone. */
27
- onSettled?: (rowId: string) => void,
25
+ write: (rowId: string, body: Record<string, unknown>) => Promise<T>,
26
+ /** Called once a row is settled: written, with the write's answer, or gone. */
27
+ onSettled?: (rowId: string, answer?: T) => void,
28
28
  ): Promise<RowWriteOutcome> {
29
29
  const outcome: RowWriteOutcome = {
30
30
  written: [],
@@ -37,8 +37,9 @@ export async function writeRows(
37
37
  outcome.left.push(rowId)
38
38
  continue
39
39
  }
40
+ let answer: T | undefined
40
41
  try {
41
- await write(rowId, body)
42
+ answer = await write(rowId, body)
42
43
  outcome.written.push(rowId)
43
44
  } catch (error) {
44
45
  if (statusOf(error) !== NOT_FOUND) {
@@ -49,7 +50,7 @@ export async function writeRows(
49
50
  }
50
51
  outcome.gone.push(rowId)
51
52
  }
52
- onSettled?.(rowId)
53
+ onSettled?.(rowId, answer)
53
54
  }
54
55
  return outcome
55
56
  }
@@ -62,3 +63,42 @@ export function changesOf<T extends { rowId: string }>(
62
63
  const rows = new Set(rowIds)
63
64
  return changes.filter((change) => rows.has(change.rowId))
64
65
  }
66
+
67
+ /** How the rows of a grid page are narrowed and ordered. */
68
+ export interface PageRefinement {
69
+ sortKey: string | null
70
+ search: string
71
+ /** The fields a column filter narrows, with a value. */
72
+ filtered: string[]
73
+ }
74
+
75
+ /**
76
+ * Whether writing `fields` may take rows in or out of the page, or move them
77
+ * in it: a field it is sorted or filtered by, or any field while a search
78
+ * runs (it matches every column). The page is then read again; otherwise
79
+ * the rows written stay where they are, as the server answered them.
80
+ */
81
+ export function mayMoveRows(
82
+ fields: Iterable<string>,
83
+ refinement: PageRefinement,
84
+ ): boolean {
85
+ if (refinement.search !== '') return true
86
+ const narrowing = new Set(refinement.filtered)
87
+ if (refinement.sortKey) narrowing.add(refinement.sortKey)
88
+ for (const field of fields) if (narrowing.has(field)) return true
89
+ return false
90
+ }
91
+
92
+ /**
93
+ * `rows` with the row the server answered a write with in place of the one of
94
+ * the same id: the fields it holds replace theirs, the browse-only ones stay.
95
+ */
96
+ export function withWrittenRow(
97
+ rows: Record<string, unknown>[],
98
+ written: Record<string, unknown>,
99
+ idOf: (row: Record<string, unknown>) => string | null,
100
+ ): Record<string, unknown>[] {
101
+ const id = idOf(written)
102
+ if (id === null) return rows
103
+ return rows.map((row) => (idOf(row) === id ? { ...row, ...written } : row))
104
+ }
@@ -12,9 +12,10 @@ import { changesOf, type RowWriteOutcome, writeRows } from './stagedWrites'
12
12
  // Writes the staged edits of a tab after the user reviewed them, then offers
13
13
  // to take them back for a few seconds, in the save bar of the current tab
14
14
  // (another tab ends the offer). Each row is written with one call of the
15
- // edit route; an undo writes the previous values back the same way. Only the
16
- // rows written are announced and undone: a row gone meanwhile drops its
17
- // changes, and a failure stops the save with the rows left still staged.
15
+ // edit route, which answers with the row as stored; an undo writes the
16
+ // previous values back the same way. Only the rows written are announced and
17
+ // undone: a row gone meanwhile drops its changes, and a failure stops the
18
+ // save with the rows left still staged.
18
19
 
19
20
  const EDIT_ENDPOINT = '/api/database/browse/edit'
20
21
  const UNDO_WINDOW_MS = 10_000
@@ -27,9 +28,19 @@ interface SaveNotice {
27
28
  scope: string
28
29
  }
29
30
 
31
+ /** What a save or an undo wrote, once it is settled. */
32
+ export interface SavedChanges {
33
+ /** The fields written. */
34
+ fields: string[]
35
+ /** Rows gone meanwhile, which the page may still show. */
36
+ gone: number
37
+ }
38
+
30
39
  interface StagedSaveOptions {
31
40
  tab: () => BrowserTab
32
- onSaved: () => void
41
+ /** A row written, as the server answered: shown at once in place of the one read. */
42
+ onWritten: (tab: BrowserTab, row: Record<string, unknown>) => void
43
+ onSaved: (saved: SavedChanges) => void
33
44
  }
34
45
 
35
46
  /** The server's reason when it gave one, else the error's own message. */
@@ -41,6 +52,10 @@ function messageOf(error: unknown): string {
41
52
  return error instanceof Error ? error.message : String(error)
42
53
  }
43
54
 
55
+ function fieldsOf(changes: StagedChange[]): string[] {
56
+ return [...new Set(changes.map((change) => change.field))]
57
+ }
58
+
44
59
  export function useStagedSave(options: StagedSaveOptions) {
45
60
  const { t, n } = useI18n()
46
61
  const { $authFetch } = useAuthFetch()
@@ -85,12 +100,13 @@ export function useStagedSave(options: StagedSaveOptions) {
85
100
  return `${tab.schema}.${tab.table} ${badge}`
86
101
  }
87
102
 
88
- async function writeRow(
103
+ /** Writes a row, and answers with it as the server now stores it. */
104
+ function writeRow(
89
105
  tab: BrowserTab,
90
106
  rowId: string,
91
107
  body: Record<string, unknown>,
92
- ) {
93
- await $authFetch(EDIT_ENDPOINT, {
108
+ ): Promise<Record<string, unknown>> {
109
+ return $authFetch<Record<string, unknown>>(EDIT_ENDPOINT, {
94
110
  method: 'PUT',
95
111
  query: { ...browseSelectionQuery(tab), id: rowId },
96
112
  body,
@@ -135,8 +151,13 @@ export function useStagedSave(options: StagedSaveOptions) {
135
151
  )
136
152
  }
137
153
 
138
- // Each row written (or gone) leaves the staged edits at once: a failure
139
- // further on keeps only the rows not written.
154
+ /** Shows a row written as the server answered it. */
155
+ function showWritten(tab: BrowserTab, row: Record<string, unknown> | undefined) {
156
+ if (row) options.onWritten(tab, row)
157
+ }
158
+
159
+ // Each row written (or gone) leaves the staged edits at once, its answer
160
+ // shown in its place: a failure further on keeps only the rows not written.
140
161
  function saveAll(tab: BrowserTab): Promise<RowWriteOutcome> {
141
162
  const rows = staged
142
163
  .rowIds(tab.id)
@@ -147,7 +168,10 @@ export function useStagedSave(options: StagedSaveOptions) {
147
168
  return writeRows(
148
169
  rows,
149
170
  (rowId, body) => writeRow(tab, rowId, body),
150
- (rowId) => staged.discard(tab.id, [rowId]),
171
+ (rowId, row) => {
172
+ showWritten(tab, row)
173
+ staged.discard(tab.id, [rowId])
174
+ },
151
175
  )
152
176
  }
153
177
 
@@ -202,6 +226,7 @@ export function useStagedSave(options: StagedSaveOptions) {
202
226
  const outcome = await writeRows(
203
227
  undoBodies(current.changes),
204
228
  (rowId, body) => writeRow(tab, rowId, body),
229
+ (_rowId, row) => showWritten(tab, row),
205
230
  )
206
231
  const restored = changesOf(current.changes, outcome.written)
207
232
  const gone = changesOf(current.changes, outcome.gone)
@@ -243,7 +268,10 @@ export function useStagedSave(options: StagedSaveOptions) {
243
268
  ),
244
269
  color: 'warning',
245
270
  })
246
- options.onSaved()
271
+ options.onSaved({
272
+ fields: fieldsOf(current.changes),
273
+ gone: outcome.gone.length,
274
+ })
247
275
  }
248
276
 
249
277
  function announce(tab: BrowserTab, saved: StagedChange[]) {
@@ -259,6 +287,7 @@ export function useStagedSave(options: StagedSaveOptions) {
259
287
  // the dialog closed, what was written is announced and undoable.
260
288
  const saved: StagedChange[] = []
261
289
  let settled = false
290
+ let gone = 0
262
291
  try {
263
292
  await confirm({
264
293
  title: t(
@@ -281,6 +310,7 @@ export function useStagedSave(options: StagedSaveOptions) {
281
310
  try {
282
311
  const outcome = await saveAll(tab)
283
312
  saved.push(...changesOf(changes, outcome.written))
313
+ gone += outcome.gone.length
284
314
  if (outcome.written.length + outcome.gone.length > 0) settled = true
285
315
  return partialOutcome(outcome, changes, saved.length)
286
316
  } finally {
@@ -289,7 +319,7 @@ export function useStagedSave(options: StagedSaveOptions) {
289
319
  },
290
320
  })
291
321
  } finally {
292
- if (settled) options.onSaved()
322
+ if (settled) options.onSaved({ fields: fieldsOf(saved), gone })
293
323
  if (saved.length > 0) announce(tab, saved)
294
324
  }
295
325
  }
@@ -14,7 +14,8 @@ import {
14
14
  import { onKeyStroke, useEventListener } from '@vueuse/core'
15
15
  import { parseDraft } from '../build/data/cellValues'
16
16
  import { useStagedEdits } from '../build/data/stagedEdits'
17
- import { useStagedSave } from '../build/data/useStagedSave'
17
+ import { mayMoveRows, withWrittenRow } from '../build/data/stagedWrites'
18
+ import { type SavedChanges, useStagedSave } from '../build/data/useStagedSave'
18
19
  import type { TableSummary } from '../build/composables/useDatabaseSchemas'
19
20
  import type { BrowserTab } from '../build/composables/useDataBrowserTabs'
20
21
  import type {
@@ -33,6 +34,8 @@ import RowDrawer from './RowDrawer.vue'
33
34
  // The grid of one open table. Rows are read a page at a time; a committed
34
35
  // cell is staged, not written (D-02): the save bar offers a review of every
35
36
  // change before it is written, then the save and its undo for a few seconds.
37
+ // A row written shows as the server answered it, in place: the page is read
38
+ // again only when the write may move rows in or out of it.
36
39
 
37
40
  const BROWSE_ENDPOINT = '/api/database/browse'
38
41
  // Browse-only columns: the source instance of a cross-instance read.
@@ -446,6 +449,30 @@ const pendingCount = computed(() => staged.count(props.tab.id))
446
449
  const changedFields = computed(() => [
447
450
  ...new Set(staged.list(props.tab.id).map((change) => change.field)),
448
451
  ])
452
+ // The page on screen, with a row written in place of the one read: the read's
453
+ // data is replaced (it is shallow), so the cell shows the stored value at once.
454
+ function showWritten(tab: BrowserTab, row: Record<string, unknown>) {
455
+ const list = listRead.data.value
456
+ if (tab.id !== props.tab.id || !list) return
457
+ listRead.data.value = {
458
+ ...list,
459
+ results: withWrittenRow(list.results ?? [], row, rowIdOf),
460
+ }
461
+ }
462
+
463
+ // A save may change which rows the page holds, or their order, only through
464
+ // the fields it sorts, filters or searches by; a row gone meanwhile leaves.
465
+ function afterSave({ fields, gone }: SavedChanges) {
466
+ const filtered = Object.entries(state.filters)
467
+ .filter(([, filter]) => filter.value)
468
+ .map(([field]) => field)
469
+ if (
470
+ gone > 0 ||
471
+ mayMoveRows(fields, { sortKey: state.sortKey, search: state.search, filtered })
472
+ )
473
+ reload()
474
+ }
475
+
449
476
  const {
450
477
  saving,
451
478
  review,
@@ -453,7 +480,8 @@ const {
453
480
  undo,
454
481
  } = useStagedSave({
455
482
  tab: () => props.tab,
456
- onSaved: reload,
483
+ onWritten: showWritten,
484
+ onSaved: afterSave,
457
485
  })
458
486
 
459
487
  onKeyStroke('s', (event) => {
@@ -6,7 +6,7 @@
6
6
  "main": "./dms.frontend.ts",
7
7
  "packageManager": "pnpm@10.6.5",
8
8
  "engines": {
9
- "@antelopejs/dms-frontend": ">=0.6.0 <0.7.0"
9
+ "@antelopejs/dms-frontend": ">=0.6.3 <0.7.0"
10
10
  },
11
11
  "scripts": {
12
12
  "dev": "pnpm --dir ../playground frontend:dev",
@@ -18,8 +18,8 @@
18
18
  "test": "vitest run"
19
19
  },
20
20
  "dependencies": {
21
- "@antelopejs/interface-core": ">=0.1.1 <1.0.0",
22
- "@antelopejs/interface-database": ">=0.1.8 <1.0.0",
21
+ "@antelopejs/interface-core": ">=0.2.4 <1.0.0",
22
+ "@antelopejs/interface-database": ">=0.1.10 <1.0.0",
23
23
  "@codemirror/autocomplete": "^6.18.6",
24
24
  "@codemirror/commands": "^6.8.1",
25
25
  "@codemirror/lang-javascript": "^6.2.4",