@antelopejs/dms-database 0.0.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 (164) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +53 -0
  3. package/dist/automation/index.d.ts +2 -0
  4. package/dist/automation/index.js +13 -0
  5. package/dist/automation/index.js.map +1 -0
  6. package/dist/automation/tableWatch.d.ts +17 -0
  7. package/dist/automation/tableWatch.js +189 -0
  8. package/dist/automation/tableWatch.js.map +1 -0
  9. package/dist/config.d.ts +7 -0
  10. package/dist/config.js +12 -0
  11. package/dist/config.js.map +1 -0
  12. package/dist/db/index.d.ts +2 -0
  13. package/dist/db/index.js +19 -0
  14. package/dist/db/index.js.map +1 -0
  15. package/dist/db/models/diagram_layouts.model.d.ts +25 -0
  16. package/dist/db/models/diagram_layouts.model.js +29 -0
  17. package/dist/db/models/diagram_layouts.model.js.map +1 -0
  18. package/dist/db/models/diagram_notes.model.d.ts +23 -0
  19. package/dist/db/models/diagram_notes.model.js +15 -0
  20. package/dist/db/models/diagram_notes.model.js.map +1 -0
  21. package/dist/db/models/index.d.ts +4 -0
  22. package/dist/db/models/index.js +21 -0
  23. package/dist/db/models/index.js.map +1 -0
  24. package/dist/db/models/query_history.model.d.ts +25 -0
  25. package/dist/db/models/query_history.model.js +33 -0
  26. package/dist/db/models/query_history.model.js.map +1 -0
  27. package/dist/db/models/saved_queries.model.d.ts +24 -0
  28. package/dist/db/models/saved_queries.model.js +21 -0
  29. package/dist/db/models/saved_queries.model.js.map +1 -0
  30. package/dist/db/tables/diagram_layouts.table.d.ts +7 -0
  31. package/dist/db/tables/diagram_layouts.table.js +35 -0
  32. package/dist/db/tables/diagram_layouts.table.js.map +1 -0
  33. package/dist/db/tables/diagram_notes.table.d.ts +13 -0
  34. package/dist/db/tables/diagram_notes.table.js +59 -0
  35. package/dist/db/tables/diagram_notes.table.js.map +1 -0
  36. package/dist/db/tables/index.d.ts +4 -0
  37. package/dist/db/tables/index.js +21 -0
  38. package/dist/db/tables/index.js.map +1 -0
  39. package/dist/db/tables/query_history.table.d.ts +11 -0
  40. package/dist/db/tables/query_history.table.js +54 -0
  41. package/dist/db/tables/query_history.table.js.map +1 -0
  42. package/dist/db/tables/saved_queries.table.d.ts +12 -0
  43. package/dist/db/tables/saved_queries.table.js +58 -0
  44. package/dist/db/tables/saved_queries.table.js.map +1 -0
  45. package/dist/index.d.ts +8 -0
  46. package/dist/index.js +56 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/pages/data.d.ts +9 -0
  49. package/dist/pages/data.js +29 -0
  50. package/dist/pages/data.js.map +1 -0
  51. package/dist/pages/index.d.ts +4 -0
  52. package/dist/pages/index.js +21 -0
  53. package/dist/pages/index.js.map +1 -0
  54. package/dist/pages/overview.d.ts +9 -0
  55. package/dist/pages/overview.js +29 -0
  56. package/dist/pages/overview.js.map +1 -0
  57. package/dist/pages/query.d.ts +9 -0
  58. package/dist/pages/query.js +29 -0
  59. package/dist/pages/query.js.map +1 -0
  60. package/dist/pages/schemas.d.ts +9 -0
  61. package/dist/pages/schemas.js +29 -0
  62. package/dist/pages/schemas.js.map +1 -0
  63. package/dist/routes/data.d.ts +25 -0
  64. package/dist/routes/data.js +324 -0
  65. package/dist/routes/data.js.map +1 -0
  66. package/dist/routes/diagram.d.ts +47 -0
  67. package/dist/routes/diagram.js +200 -0
  68. package/dist/routes/diagram.js.map +1 -0
  69. package/dist/routes/health.d.ts +6 -0
  70. package/dist/routes/health.js +35 -0
  71. package/dist/routes/health.js.map +1 -0
  72. package/dist/routes/index.d.ts +6 -0
  73. package/dist/routes/index.js +23 -0
  74. package/dist/routes/index.js.map +1 -0
  75. package/dist/routes/query.d.ts +26 -0
  76. package/dist/routes/query.js +245 -0
  77. package/dist/routes/query.js.map +1 -0
  78. package/dist/routes/schemas.d.ts +8 -0
  79. package/dist/routes/schemas.js +35 -0
  80. package/dist/routes/schemas.js.map +1 -0
  81. package/dist/routes/tables.d.ts +23 -0
  82. package/dist/routes/tables.js +94 -0
  83. package/dist/routes/tables.js.map +1 -0
  84. package/dist/service/fieldDescriptor.d.ts +66 -0
  85. package/dist/service/fieldDescriptor.js +156 -0
  86. package/dist/service/fieldDescriptor.js.map +1 -0
  87. package/dist/service/health.d.ts +20 -0
  88. package/dist/service/health.js +58 -0
  89. package/dist/service/health.js.map +1 -0
  90. package/dist/service/introspect.d.ts +6 -0
  91. package/dist/service/introspect.js +312 -0
  92. package/dist/service/introspect.js.map +1 -0
  93. package/dist/service/schemaLabels.d.ts +7 -0
  94. package/dist/service/schemaLabels.js +39 -0
  95. package/dist/service/schemaLabels.js.map +1 -0
  96. package/dist/service/schemaRegistry.d.ts +2 -0
  97. package/dist/service/schemaRegistry.js +8 -0
  98. package/dist/service/schemaRegistry.js.map +1 -0
  99. package/dist/service/stagedSerialization.d.ts +6 -0
  100. package/dist/service/stagedSerialization.js +54 -0
  101. package/dist/service/stagedSerialization.js.map +1 -0
  102. package/dist/service/types.d.ts +67 -0
  103. package/dist/service/types.js +3 -0
  104. package/dist/service/types.js.map +1 -0
  105. package/dist/types/constants.d.ts +3 -0
  106. package/dist/types/constants.js +7 -0
  107. package/dist/types/constants.js.map +1 -0
  108. package/dist/types/responses.d.ts +14 -0
  109. package/dist/types/responses.js +3 -0
  110. package/dist/types/responses.js.map +1 -0
  111. package/dist/utils/query.d.ts +17 -0
  112. package/dist/utils/query.js +116 -0
  113. package/dist/utils/query.js.map +1 -0
  114. package/dist/utils/requestValidation.d.ts +2 -0
  115. package/dist/utils/requestValidation.js +14 -0
  116. package/dist/utils/requestValidation.js.map +1 -0
  117. package/frontend-vue/.editorconfig +12 -0
  118. package/frontend-vue/.prettierrc +11 -0
  119. package/frontend-vue/app/components/DataBrowserSidebar.vue +254 -0
  120. package/frontend-vue/app/components/DataBrowserTabBar.vue +166 -0
  121. package/frontend-vue/app/components/DataGrid.vue +735 -0
  122. package/frontend-vue/app/components/DataGridCell.vue +147 -0
  123. package/frontend-vue/app/components/DataGridHeaderCell.vue +175 -0
  124. package/frontend-vue/app/components/DiagramNoteNode.vue +100 -0
  125. package/frontend-vue/app/components/DiagramRelationEdge.vue +62 -0
  126. package/frontend-vue/app/components/DiagramStubNode.vue +37 -0
  127. package/frontend-vue/app/components/DiagramTableNode.vue +94 -0
  128. package/frontend-vue/app/components/JsonCellPanel.vue +93 -0
  129. package/frontend-vue/app/components/QueryBuilderPanel.vue +501 -0
  130. package/frontend-vue/app/components/QueryFavoritesPanel.vue +127 -0
  131. package/frontend-vue/app/components/QueryHistoryPanel.vue +134 -0
  132. package/frontend-vue/app/components/QueryResultPanel.vue +204 -0
  133. package/frontend-vue/app/components/SchemaDiagram.vue +1150 -0
  134. package/frontend-vue/app/components/SchemaTableInspector.vue +278 -0
  135. package/frontend-vue/app/composables/useDataBrowserGrid.ts +162 -0
  136. package/frontend-vue/app/composables/useDataBrowserTabs.ts +255 -0
  137. package/frontend-vue/app/composables/useDatabaseHealth.ts +50 -0
  138. package/frontend-vue/app/composables/useDatabaseSchemas.ts +92 -0
  139. package/frontend-vue/app/composables/useDiagramPersistence.ts +99 -0
  140. package/frontend-vue/app/composables/useQueryRuntime.ts +118 -0
  141. package/frontend-vue/app/composables/useQueryStore.ts +117 -0
  142. package/frontend-vue/app/composables/useTableViewRowClick.ts +22 -0
  143. package/frontend-vue/app/custom-pages/database/data.vue +42 -0
  144. package/frontend-vue/app/custom-pages/database/overview.vue +367 -0
  145. package/frontend-vue/app/custom-pages/database/query.vue +432 -0
  146. package/frontend-vue/app/custom-pages/database/schemas.vue +216 -0
  147. package/frontend-vue/app/utils/databaseFieldModifiers.ts +33 -0
  148. package/frontend-vue/app/utils/databaseFieldTypeIcons.ts +224 -0
  149. package/frontend-vue/app/utils/dmsTableView.ts +83 -0
  150. package/frontend-vue/app/utils/relativeTime.ts +15 -0
  151. package/frontend-vue/app/utils/stagedSerialization.ts +91 -0
  152. package/frontend-vue/dms.frontend.ts +38 -0
  153. package/frontend-vue/eslint.config.mjs +16 -0
  154. package/frontend-vue/i18n/locales/database-en-GB.json +239 -0
  155. package/frontend-vue/i18n/locales/database-fr-FR.json +239 -0
  156. package/frontend-vue/package.json +42 -0
  157. package/frontend-vue/pnpm-lock.yaml +5819 -0
  158. package/frontend-vue/pnpm-workspace.yaml +2 -0
  159. package/frontend-vue/tests/persistence.test.ts +70 -0
  160. package/frontend-vue/tests/queryRuntime.test.ts +53 -0
  161. package/frontend-vue/tests/registration.test.ts +33 -0
  162. package/frontend-vue/tsconfig.json +13 -0
  163. package/frontend-vue/vitest.config.ts +5 -0
  164. package/package.json +78 -0
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.DatabaseDiagramController = void 0;
16
+ const interface_api_1 = require("@antelopejs/interface-api");
17
+ const interface_api_util_1 = require("@antelopejs/interface-api-util");
18
+ const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
19
+ const auth_1 = require("@antelopejs/interface-dms/auth");
20
+ const db_1 = require("../db");
21
+ const requestValidation_1 = require("../utils/requestValidation");
22
+ function asFiniteNumber(value, label) {
23
+ (0, interface_api_util_1.assert)(typeof value === "number" && Number.isFinite(value), 400, `Expected finite number for ${label}`);
24
+ return value;
25
+ }
26
+ function asPositions(value) {
27
+ (0, interface_api_util_1.assert)(typeof value === "object" && value !== null && !Array.isArray(value), 400, "Expected positions object");
28
+ const out = {};
29
+ for (const [key, raw] of Object.entries(value)) {
30
+ (0, interface_api_util_1.assert)(typeof raw === "object" && raw !== null, 400, `Invalid position for ${key}`);
31
+ const entry = raw;
32
+ const x = asFiniteNumber(entry.x, `${key}.x`);
33
+ const y = asFiniteNumber(entry.y, `${key}.y`);
34
+ out[key] = { x, y };
35
+ }
36
+ return out;
37
+ }
38
+ function toIso(value) {
39
+ return value instanceof Date
40
+ ? value.toISOString()
41
+ : new Date(value).toISOString();
42
+ }
43
+ function toNoteWire(row) {
44
+ return {
45
+ id: row._id,
46
+ schemaName: row.schemaName,
47
+ text: row.text,
48
+ x: row.x,
49
+ y: row.y,
50
+ width: row.width,
51
+ height: row.height,
52
+ color: row.color ?? null,
53
+ createdAt: toIso(row.createdAt),
54
+ updatedAt: toIso(row.updatedAt),
55
+ };
56
+ }
57
+ let DatabaseDiagramController = class DatabaseDiagramController extends (0, interface_api_1.Controller)("/api/database/diagram") {
58
+ async getLayout(_user, schema) {
59
+ const schemaName = (0, requestValidation_1.asNonEmptyString)(schema);
60
+ const layoutModel = (0, interface_database_decorators_1.GetModel)(db_1.DiagramLayoutModel);
61
+ const row = await layoutModel.getBySchema(schemaName);
62
+ if (!row)
63
+ return { positions: {} };
64
+ try {
65
+ const parsed = JSON.parse(row.positions);
66
+ return { positions: asPositions(parsed) };
67
+ }
68
+ catch {
69
+ return { positions: {} };
70
+ }
71
+ }
72
+ async putLayout(_user, schema, body) {
73
+ const schemaName = (0, requestValidation_1.asNonEmptyString)(schema);
74
+ const positions = asPositions(body?.positions);
75
+ const layoutModel = (0, interface_database_decorators_1.GetModel)(db_1.DiagramLayoutModel);
76
+ await layoutModel.upsertForSchema(schemaName, positions);
77
+ return { success: true };
78
+ }
79
+ async listNotes(_user, schema) {
80
+ const schemaName = (0, requestValidation_1.asNonEmptyString)(schema);
81
+ const noteModel = (0, interface_database_decorators_1.GetModel)(db_1.DiagramNoteModel);
82
+ const rows = await noteModel.listBySchema(schemaName);
83
+ return {
84
+ items: rows.map((r) => toNoteWire(r)),
85
+ };
86
+ }
87
+ async createNote(_user, body) {
88
+ const schemaName = (0, requestValidation_1.asNonEmptyString)(body?.schemaName);
89
+ const text = (0, requestValidation_1.asString)(body?.text) ?? "";
90
+ const x = asFiniteNumber(body?.x, "x");
91
+ const y = asFiniteNumber(body?.y, "y");
92
+ const width = asFiniteNumber(body?.width, "width");
93
+ const height = asFiniteNumber(body?.height, "height");
94
+ const color = (0, requestValidation_1.asString)(body?.color);
95
+ const noteModel = (0, interface_database_decorators_1.GetModel)(db_1.DiagramNoteModel);
96
+ const now = new Date();
97
+ const ids = await noteModel.insert({
98
+ schemaName,
99
+ text,
100
+ x,
101
+ y,
102
+ width,
103
+ height,
104
+ color,
105
+ createdAt: now,
106
+ updatedAt: now,
107
+ });
108
+ const id = ids[0];
109
+ (0, interface_api_util_1.assert)(id !== undefined, 500, "Failed to persist note");
110
+ const row = await noteModel.get(id);
111
+ (0, interface_api_util_1.assert)(row !== undefined, 500, "Failed to load note after insert");
112
+ return toNoteWire(row);
113
+ }
114
+ async updateNote(_user, id, body) {
115
+ const noteId = (0, requestValidation_1.asNonEmptyString)(id);
116
+ const noteModel = (0, interface_database_decorators_1.GetModel)(db_1.DiagramNoteModel);
117
+ const existing = await noteModel.get(noteId);
118
+ (0, interface_api_util_1.assert)(existing !== undefined, 404, "Note not found");
119
+ const patch = { updatedAt: new Date() };
120
+ if (body?.text !== undefined)
121
+ patch.text = (0, requestValidation_1.asString)(body.text) ?? "";
122
+ if (body?.x !== undefined)
123
+ patch.x = asFiniteNumber(body.x, "x");
124
+ if (body?.y !== undefined)
125
+ patch.y = asFiniteNumber(body.y, "y");
126
+ if (body?.width !== undefined)
127
+ patch.width = asFiniteNumber(body.width, "width");
128
+ if (body?.height !== undefined)
129
+ patch.height = asFiniteNumber(body.height, "height");
130
+ if (body?.color !== undefined)
131
+ patch.color = (0, requestValidation_1.asString)(body.color);
132
+ await noteModel.update(noteId, patch);
133
+ const row = await noteModel.get(noteId);
134
+ (0, interface_api_util_1.assert)(row !== undefined, 500, "Failed to reload note after update");
135
+ return toNoteWire(row);
136
+ }
137
+ async deleteNote(_user, id) {
138
+ const noteId = (0, requestValidation_1.asNonEmptyString)(id);
139
+ const noteModel = (0, interface_database_decorators_1.GetModel)(db_1.DiagramNoteModel);
140
+ const existing = await noteModel.get(noteId);
141
+ (0, interface_api_util_1.assert)(existing !== undefined, 404, "Note not found");
142
+ await noteModel.delete(noteId);
143
+ return { success: true };
144
+ }
145
+ };
146
+ exports.DatabaseDiagramController = DatabaseDiagramController;
147
+ __decorate([
148
+ (0, interface_api_1.Get)("/layout/:schema"),
149
+ __param(0, (0, auth_1.AuthRawUser)()),
150
+ __param(1, (0, interface_api_1.Parameter)("schema", "param")),
151
+ __metadata("design:type", Function),
152
+ __metadata("design:paramtypes", [Function, Object]),
153
+ __metadata("design:returntype", Promise)
154
+ ], DatabaseDiagramController.prototype, "getLayout", null);
155
+ __decorate([
156
+ (0, interface_api_1.Put)("/layout/:schema"),
157
+ __param(0, (0, auth_1.AuthRawUser)()),
158
+ __param(1, (0, interface_api_1.Parameter)("schema", "param")),
159
+ __param(2, (0, interface_api_1.JSONBody)()),
160
+ __metadata("design:type", Function),
161
+ __metadata("design:paramtypes", [Function, Object, Object]),
162
+ __metadata("design:returntype", Promise)
163
+ ], DatabaseDiagramController.prototype, "putLayout", null);
164
+ __decorate([
165
+ (0, interface_api_1.Get)("/notes"),
166
+ __param(0, (0, auth_1.AuthRawUser)()),
167
+ __param(1, (0, interface_api_1.Parameter)("schema", "query")),
168
+ __metadata("design:type", Function),
169
+ __metadata("design:paramtypes", [Function, Object]),
170
+ __metadata("design:returntype", Promise)
171
+ ], DatabaseDiagramController.prototype, "listNotes", null);
172
+ __decorate([
173
+ (0, interface_api_1.Post)("/notes"),
174
+ __param(0, (0, auth_1.AuthRawUser)()),
175
+ __param(1, (0, interface_api_1.JSONBody)()),
176
+ __metadata("design:type", Function),
177
+ __metadata("design:paramtypes", [Function, Object]),
178
+ __metadata("design:returntype", Promise)
179
+ ], DatabaseDiagramController.prototype, "createNote", null);
180
+ __decorate([
181
+ (0, interface_api_1.Put)("/notes/:id"),
182
+ __param(0, (0, auth_1.AuthRawUser)()),
183
+ __param(1, (0, interface_api_1.Parameter)("id", "param")),
184
+ __param(2, (0, interface_api_1.JSONBody)()),
185
+ __metadata("design:type", Function),
186
+ __metadata("design:paramtypes", [Function, Object, Object]),
187
+ __metadata("design:returntype", Promise)
188
+ ], DatabaseDiagramController.prototype, "updateNote", null);
189
+ __decorate([
190
+ (0, interface_api_1.Delete)("/notes/:id"),
191
+ __param(0, (0, auth_1.AuthRawUser)()),
192
+ __param(1, (0, interface_api_1.Parameter)("id", "param")),
193
+ __metadata("design:type", Function),
194
+ __metadata("design:paramtypes", [Function, Object]),
195
+ __metadata("design:returntype", Promise)
196
+ ], DatabaseDiagramController.prototype, "deleteNote", null);
197
+ exports.DatabaseDiagramController = DatabaseDiagramController = __decorate([
198
+ (0, auth_1.AuthOwnerOnly)()
199
+ ], DatabaseDiagramController);
200
+ //# sourceMappingURL=diagram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagram.js","sourceRoot":"","sources":["../../src/routes/diagram.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { User } from "@antelopejs/interface-dms/auth/db";
2
+ declare const DatabaseHealthController_base: import("@antelopejs/interface-api").ControllerClass<object>;
3
+ export declare class DatabaseHealthController extends DatabaseHealthController_base {
4
+ health(_user: User): Promise<import("../service/health").OverviewHealth>;
5
+ }
6
+ export {};
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.DatabaseHealthController = void 0;
16
+ const interface_api_1 = require("@antelopejs/interface-api");
17
+ const auth_1 = require("@antelopejs/interface-dms/auth");
18
+ const health_1 = require("../service/health");
19
+ let DatabaseHealthController = class DatabaseHealthController extends (0, interface_api_1.Controller)("/api/database/health") {
20
+ async health(_user) {
21
+ return (0, health_1.getOverviewHealth)();
22
+ }
23
+ };
24
+ exports.DatabaseHealthController = DatabaseHealthController;
25
+ __decorate([
26
+ (0, interface_api_1.Get)("/"),
27
+ __param(0, (0, auth_1.AuthRawUser)()),
28
+ __metadata("design:type", Function),
29
+ __metadata("design:paramtypes", [Function]),
30
+ __metadata("design:returntype", Promise)
31
+ ], DatabaseHealthController.prototype, "health", null);
32
+ exports.DatabaseHealthController = DatabaseHealthController = __decorate([
33
+ (0, auth_1.AuthOwnerOnly)()
34
+ ], DatabaseHealthController);
35
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/routes/health.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAA4D;AAC5D,yDAA4E;AAE5E,8CAAsD;AAG/C,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,IAAA,0BAAU,EACtD,sBAAsB,CACvB;IAEO,AAAN,KAAK,CAAC,MAAM,CAAgB,KAAW;QACrC,OAAO,IAAA,0BAAiB,GAAE,CAAC;IAC7B,CAAC;CACF,CAAA;AAPY,4DAAwB;AAI7B;IADL,IAAA,mBAAG,EAAC,GAAG,CAAC;IACK,WAAA,IAAA,kBAAW,GAAE,CAAA;;;;sDAE1B;mCANU,wBAAwB;IADpC,IAAA,oBAAa,GAAE;GACH,wBAAwB,CAOpC"}
@@ -0,0 +1,6 @@
1
+ export * from "./data";
2
+ export * from "./diagram";
3
+ export * from "./health";
4
+ export * from "./query";
5
+ export * from "./schemas";
6
+ export * from "./tables";
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./data"), exports);
18
+ __exportStar(require("./diagram"), exports);
19
+ __exportStar(require("./health"), exports);
20
+ __exportStar(require("./query"), exports);
21
+ __exportStar(require("./schemas"), exports);
22
+ __exportStar(require("./tables"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,4CAA0B;AAC1B,2CAAyB;AACzB,0CAAwB;AACxB,4CAA0B;AAC1B,2CAAyB"}
@@ -0,0 +1,26 @@
1
+ import type { User } from "@antelopejs/interface-dms/auth/db";
2
+ import type { ExecuteResult, HistoryEntry, SavedQuery } from "../service/types";
3
+ import type { ListResult, PaginatedResult, SuccessResponse } from "../types/responses";
4
+ interface ExecuteBody {
5
+ query?: unknown;
6
+ source?: unknown;
7
+ language?: unknown;
8
+ }
9
+ interface SaveBody {
10
+ name?: unknown;
11
+ description?: unknown;
12
+ query?: unknown;
13
+ source?: unknown;
14
+ language?: unknown;
15
+ shared?: unknown;
16
+ }
17
+ declare const DatabaseQueryController_base: import("@antelopejs/interface-api").ControllerClass<object>;
18
+ export declare class DatabaseQueryController extends DatabaseQueryController_base {
19
+ execute(user: User, body: ExecuteBody): Promise<ExecuteResult>;
20
+ createSaved(user: User, body: SaveBody): Promise<SavedQuery>;
21
+ updateSaved(user: User, id: unknown, body: SaveBody): Promise<SavedQuery>;
22
+ listSaved(user: User, scope: unknown): Promise<ListResult<SavedQuery>>;
23
+ deleteSaved(user: User, id: unknown): Promise<SuccessResponse>;
24
+ listHistory(user: User, limitRaw: unknown, offsetRaw: unknown): Promise<PaginatedResult<HistoryEntry>>;
25
+ }
26
+ export {};
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.DatabaseQueryController = void 0;
16
+ const interface_api_1 = require("@antelopejs/interface-api");
17
+ const interface_api_util_1 = require("@antelopejs/interface-api-util");
18
+ const interface_database_1 = require("@antelopejs/interface-database");
19
+ const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
20
+ const auth_1 = require("@antelopejs/interface-dms/auth");
21
+ const db_1 = require("../db");
22
+ const stagedSerialization_1 = require("../service/stagedSerialization");
23
+ const query_1 = require("../utils/query");
24
+ const requestValidation_1 = require("../utils/requestValidation");
25
+ const DEFAULT_HISTORY_LIMIT = 25;
26
+ const MAX_HISTORY_LIMIT = 200;
27
+ const SUPPORTED_LANGUAGES = ["aql"];
28
+ function asRecord(value) {
29
+ (0, interface_api_util_1.assert)(typeof value === "object" && value !== null && !Array.isArray(value), 400, "Expected query to be an object");
30
+ return value;
31
+ }
32
+ function asLanguage(value) {
33
+ const lang = (0, requestValidation_1.asString)(value);
34
+ (0, interface_api_util_1.assert)(lang !== undefined && SUPPORTED_LANGUAGES.includes(lang), 400, "Unsupported query language");
35
+ return lang;
36
+ }
37
+ function asSavedScope(value) {
38
+ const str = (0, requestValidation_1.asString)(value);
39
+ if (str === "shared")
40
+ return "shared";
41
+ return "me";
42
+ }
43
+ function asBoolean(value) {
44
+ return value === true;
45
+ }
46
+ function decodeRunnable(query) {
47
+ const root = (0, stagedSerialization_1.decodeStaged)(query);
48
+ (0, interface_api_util_1.assert)(root instanceof interface_database_1.Query, 400, "Query must resolve to a runnable expression (Table/Selection/Stream/Datum/Query)");
49
+ return root;
50
+ }
51
+ function parseSaveBody(body) {
52
+ const query = asRecord(body?.query);
53
+ decodeRunnable(query);
54
+ return {
55
+ name: (0, requestValidation_1.asNonEmptyString)(body?.name),
56
+ description: (0, requestValidation_1.asString)(body?.description) ?? "",
57
+ query,
58
+ source: (0, requestValidation_1.asNonEmptyString)(body?.source),
59
+ language: asLanguage(body?.language),
60
+ shared: asBoolean(body?.shared),
61
+ };
62
+ }
63
+ async function getOwnedSavedQuery(id, userId) {
64
+ const queryId = (0, requestValidation_1.asNonEmptyString)(id);
65
+ const row = await (0, interface_database_decorators_1.GetModel)(db_1.SavedQueryModel).get(queryId);
66
+ (0, interface_api_util_1.assert)(row !== undefined, 404, "Saved query not found");
67
+ const owned = row;
68
+ (0, interface_api_util_1.assert)(owned.userId === userId, 404, "Saved query not found");
69
+ return owned;
70
+ }
71
+ function toSavedWire(row) {
72
+ return {
73
+ id: row._id,
74
+ userId: row.userId,
75
+ name: row.name,
76
+ description: row.description,
77
+ query: row.query,
78
+ source: row.source,
79
+ language: row.language,
80
+ shared: row.shared,
81
+ createdAt: row.createdAt instanceof Date
82
+ ? row.createdAt.toISOString()
83
+ : new Date(row.createdAt).toISOString(),
84
+ };
85
+ }
86
+ function normaliseRows(raw) {
87
+ if (Array.isArray(raw)) {
88
+ return raw.map((entry) => entry !== null && typeof entry === "object" && !Array.isArray(entry)
89
+ ? entry
90
+ : { value: entry });
91
+ }
92
+ if (raw === undefined)
93
+ return [];
94
+ if (raw !== null && typeof raw === "object") {
95
+ return [raw];
96
+ }
97
+ return [{ value: raw }];
98
+ }
99
+ function toHistoryWire(row) {
100
+ return {
101
+ id: row._id,
102
+ userId: row.userId,
103
+ query: row.query,
104
+ source: row.source,
105
+ language: row.language,
106
+ executedAt: row.executedAt instanceof Date
107
+ ? row.executedAt.toISOString()
108
+ : new Date(row.executedAt).toISOString(),
109
+ durationMs: row.durationMs,
110
+ rowCount: row.rowCount,
111
+ };
112
+ }
113
+ let DatabaseQueryController = class DatabaseQueryController extends (0, interface_api_1.Controller)("/api/database/query") {
114
+ async execute(user, body) {
115
+ const query = asRecord(body?.query);
116
+ const source = (0, requestValidation_1.asNonEmptyString)(body?.source);
117
+ const language = asLanguage(body?.language);
118
+ const root = decodeRunnable(query);
119
+ const executedAt = new Date();
120
+ const startedAt = Date.now();
121
+ let raw;
122
+ try {
123
+ raw = await root.run();
124
+ }
125
+ catch (err) {
126
+ (0, interface_api_util_1.assert)(false, 400, err.message ?? "Query execution failed");
127
+ }
128
+ const durationMs = Date.now() - startedAt;
129
+ const rows = normaliseRows(raw);
130
+ const historyModel = (0, interface_database_decorators_1.GetModel)(db_1.QueryHistoryModel);
131
+ await historyModel.addAndPrune({
132
+ userId: user._id,
133
+ query,
134
+ source,
135
+ language,
136
+ executedAt,
137
+ durationMs,
138
+ rowCount: rows.length,
139
+ });
140
+ return {
141
+ rows,
142
+ executedAt: executedAt.toISOString(),
143
+ durationMs,
144
+ };
145
+ }
146
+ async createSaved(user, body) {
147
+ const input = parseSaveBody(body);
148
+ const savedModel = (0, interface_database_decorators_1.GetModel)(db_1.SavedQueryModel);
149
+ const ids = await savedModel.insert({
150
+ userId: user._id,
151
+ ...input,
152
+ createdAt: new Date(),
153
+ });
154
+ const id = ids[0];
155
+ (0, interface_api_util_1.assert)(id !== undefined, 500, "Failed to persist saved query");
156
+ const row = await savedModel.get(id);
157
+ (0, interface_api_util_1.assert)(row !== undefined, 500, "Failed to load saved query after insert");
158
+ return toSavedWire(row);
159
+ }
160
+ async updateSaved(user, id, body) {
161
+ const input = parseSaveBody(body);
162
+ const existing = await getOwnedSavedQuery(id, user._id);
163
+ await (0, interface_database_decorators_1.GetModel)(db_1.SavedQueryModel).update(existing._id, input);
164
+ return { ...toSavedWire(existing), ...input };
165
+ }
166
+ async listSaved(user, scope) {
167
+ const savedModel = (0, interface_database_decorators_1.GetModel)(db_1.SavedQueryModel);
168
+ const rows = asSavedScope(scope) === "shared"
169
+ ? await savedModel.listShared()
170
+ : await savedModel.listForUser(user._id);
171
+ return {
172
+ items: rows.map((r) => toSavedWire(r)),
173
+ };
174
+ }
175
+ async deleteSaved(user, id) {
176
+ const existing = await getOwnedSavedQuery(id, user._id);
177
+ await (0, interface_database_decorators_1.GetModel)(db_1.SavedQueryModel).delete(existing._id);
178
+ return { success: true };
179
+ }
180
+ async listHistory(user, limitRaw, offsetRaw) {
181
+ const limit = (0, query_1.clamp)((0, query_1.parseInteger)(limitRaw, DEFAULT_HISTORY_LIMIT), 1, MAX_HISTORY_LIMIT);
182
+ const offset = Math.max(0, (0, query_1.parseInteger)(offsetRaw, 0));
183
+ const historyModel = (0, interface_database_decorators_1.GetModel)(db_1.QueryHistoryModel);
184
+ const { items, total } = await historyModel.listForUser(user._id, limit, offset);
185
+ return {
186
+ items: items.map((r) => toHistoryWire(r)),
187
+ total,
188
+ };
189
+ }
190
+ };
191
+ exports.DatabaseQueryController = DatabaseQueryController;
192
+ __decorate([
193
+ (0, interface_api_1.Post)("/execute"),
194
+ __param(0, (0, auth_1.AuthRawUser)()),
195
+ __param(1, (0, interface_api_1.JSONBody)()),
196
+ __metadata("design:type", Function),
197
+ __metadata("design:paramtypes", [Function, Object]),
198
+ __metadata("design:returntype", Promise)
199
+ ], DatabaseQueryController.prototype, "execute", null);
200
+ __decorate([
201
+ (0, interface_api_1.Post)("/saved"),
202
+ __param(0, (0, auth_1.AuthRawUser)()),
203
+ __param(1, (0, interface_api_1.JSONBody)()),
204
+ __metadata("design:type", Function),
205
+ __metadata("design:paramtypes", [Function, Object]),
206
+ __metadata("design:returntype", Promise)
207
+ ], DatabaseQueryController.prototype, "createSaved", null);
208
+ __decorate([
209
+ (0, interface_api_1.Put)("/saved/:id"),
210
+ __param(0, (0, auth_1.AuthRawUser)()),
211
+ __param(1, (0, interface_api_1.Parameter)("id", "param")),
212
+ __param(2, (0, interface_api_1.JSONBody)()),
213
+ __metadata("design:type", Function),
214
+ __metadata("design:paramtypes", [Function, Object, Object]),
215
+ __metadata("design:returntype", Promise)
216
+ ], DatabaseQueryController.prototype, "updateSaved", null);
217
+ __decorate([
218
+ (0, interface_api_1.Get)("/saved"),
219
+ __param(0, (0, auth_1.AuthRawUser)()),
220
+ __param(1, (0, interface_api_1.Parameter)("scope", "query")),
221
+ __metadata("design:type", Function),
222
+ __metadata("design:paramtypes", [Function, Object]),
223
+ __metadata("design:returntype", Promise)
224
+ ], DatabaseQueryController.prototype, "listSaved", null);
225
+ __decorate([
226
+ (0, interface_api_1.Delete)("/saved/:id"),
227
+ __param(0, (0, auth_1.AuthRawUser)()),
228
+ __param(1, (0, interface_api_1.Parameter)("id", "param")),
229
+ __metadata("design:type", Function),
230
+ __metadata("design:paramtypes", [Function, Object]),
231
+ __metadata("design:returntype", Promise)
232
+ ], DatabaseQueryController.prototype, "deleteSaved", null);
233
+ __decorate([
234
+ (0, interface_api_1.Get)("/history"),
235
+ __param(0, (0, auth_1.AuthRawUser)()),
236
+ __param(1, (0, interface_api_1.Parameter)("limit", "query")),
237
+ __param(2, (0, interface_api_1.Parameter)("offset", "query")),
238
+ __metadata("design:type", Function),
239
+ __metadata("design:paramtypes", [Function, Object, Object]),
240
+ __metadata("design:returntype", Promise)
241
+ ], DatabaseQueryController.prototype, "listHistory", null);
242
+ exports.DatabaseQueryController = DatabaseQueryController = __decorate([
243
+ (0, auth_1.AuthOwnerOnly)()
244
+ ], DatabaseQueryController);
245
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/routes/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { User } from "@antelopejs/interface-dms/auth/db";
2
+ declare const DatabaseSchemasController_base: import("@antelopejs/interface-api").ControllerClass<object>;
3
+ export declare class DatabaseSchemasController extends DatabaseSchemasController_base {
4
+ list(_user: User): Promise<{
5
+ schemas: import("../service/types").SchemaSummaryWithStats[];
6
+ }>;
7
+ }
8
+ export {};
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.DatabaseSchemasController = void 0;
16
+ const interface_api_1 = require("@antelopejs/interface-api");
17
+ const auth_1 = require("@antelopejs/interface-dms/auth");
18
+ const introspect_1 = require("../service/introspect");
19
+ let DatabaseSchemasController = class DatabaseSchemasController extends (0, interface_api_1.Controller)("/api/database/schemas") {
20
+ async list(_user) {
21
+ return { schemas: await (0, introspect_1.listSchemaSummariesWithStats)() };
22
+ }
23
+ };
24
+ exports.DatabaseSchemasController = DatabaseSchemasController;
25
+ __decorate([
26
+ (0, interface_api_1.Get)("/"),
27
+ __param(0, (0, auth_1.AuthRawUser)()),
28
+ __metadata("design:type", Function),
29
+ __metadata("design:paramtypes", [Function]),
30
+ __metadata("design:returntype", Promise)
31
+ ], DatabaseSchemasController.prototype, "list", null);
32
+ exports.DatabaseSchemasController = DatabaseSchemasController = __decorate([
33
+ (0, auth_1.AuthOwnerOnly)()
34
+ ], DatabaseSchemasController);
35
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/routes/schemas.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAA4D;AAC5D,yDAA4E;AAE5E,sDAAqE;AAG9D,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,IAAA,0BAAU,EACvD,uBAAuB,CACxB;IAEO,AAAN,KAAK,CAAC,IAAI,CAAgB,KAAW;QACnC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAA,yCAA4B,GAAE,EAAE,CAAC;IAC3D,CAAC;CACF,CAAA;AAPY,8DAAyB;AAI9B;IADL,IAAA,mBAAG,EAAC,GAAG,CAAC;IACG,WAAA,IAAA,kBAAW,GAAE,CAAA;;;;qDAExB;oCANU,yBAAyB;IADrC,IAAA,oBAAa,GAAE;GACH,yBAAyB,CAOrC"}