@kernhq/module-quire 0.4.1 → 0.6.0

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 (49) hide show
  1. package/dist/contract/index.d.ts +1 -0
  2. package/dist/contract/index.d.ts.map +1 -1
  3. package/dist/contract/index.js +1 -0
  4. package/dist/contract/index.js.map +1 -1
  5. package/dist/contract/properties.d.ts +485 -0
  6. package/dist/contract/properties.d.ts.map +1 -0
  7. package/dist/contract/properties.js +175 -0
  8. package/dist/contract/properties.js.map +1 -0
  9. package/dist/contract/router.d.ts +1101 -0
  10. package/dist/contract/router.d.ts.map +1 -1
  11. package/dist/contract/router.js +88 -0
  12. package/dist/contract/router.js.map +1 -1
  13. package/dist/server/_impl.d.ts +1182 -0
  14. package/dist/server/_impl.d.ts.map +1 -1
  15. package/dist/server/_impl.js +113 -0
  16. package/dist/server/_impl.js.map +1 -1
  17. package/dist/server/formula.d.ts +49 -0
  18. package/dist/server/formula.d.ts.map +1 -0
  19. package/dist/server/formula.js +407 -0
  20. package/dist/server/formula.js.map +1 -0
  21. package/dist/server/schema.d.ts +696 -1
  22. package/dist/server/schema.d.ts.map +1 -1
  23. package/dist/server/schema.js +100 -1
  24. package/dist/server/schema.js.map +1 -1
  25. package/dist/server/services/access.d.ts +3 -0
  26. package/dist/server/services/access.d.ts.map +1 -1
  27. package/dist/server/services/databases.d.ts +330 -0
  28. package/dist/server/services/databases.d.ts.map +1 -0
  29. package/dist/server/services/databases.js +515 -0
  30. package/dist/server/services/databases.js.map +1 -0
  31. package/dist/server/services/index.d.ts +3 -0
  32. package/dist/server/services/index.d.ts.map +1 -1
  33. package/dist/server/services/index.js +3 -0
  34. package/dist/server/services/index.js.map +1 -1
  35. package/dist/server/services/query.d.ts +13 -0
  36. package/dist/server/services/query.d.ts.map +1 -0
  37. package/dist/server/services/query.js +154 -0
  38. package/dist/server/services/query.js.map +1 -0
  39. package/dist/server/services/versions.d.ts +6 -0
  40. package/dist/server/services/versions.d.ts.map +1 -1
  41. package/migrations/0004_databases.sql +83 -0
  42. package/migrations/0005_rows_are_pages.sql +6 -0
  43. package/migrations/meta/0004_snapshot.json +1129 -0
  44. package/migrations/meta/0005_snapshot.json +1191 -0
  45. package/migrations/meta/_journal.json +14 -0
  46. package/package.json +1 -1
  47. package/src/contract/index.ts +1 -0
  48. package/src/contract/properties.ts +201 -0
  49. package/src/contract/router.ts +115 -0
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/server/schema.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,MAAM,qDAAwB,CAAA;AAY3C,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBlB,CAAA;AAED,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8CjB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BxB,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BpB,CAAA;AAED,mGAAmG;AACnG,eAAO,MAAM,aAAa,2DAA4D,CAAA"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/server/schema.ts"],"names":[],"mappings":"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"}
@@ -74,6 +74,19 @@ export const pages = schema.table('pages', {
74
74
  hasUnpublishedChanges: boolean('has_unpublished_changes').notNull().default(false),
75
75
  /** Flattened prose, kept for search; the collab service publishes it as the document changes. */
76
76
  text: text('text').notNull().default(''),
77
+ /**
78
+ * Set when this page is a row of a database. A row *is* a page — that is what makes it
79
+ * openable, commentable, versioned and searchable without any of it being built twice.
80
+ */
81
+ databaseId: uuid('database_id'),
82
+ /**
83
+ * The row's cells, keyed by property *key* rather than id, so renaming a column keeps its data.
84
+ * JSONB with a GIN index rather than a row per value: an entity-attribute-value table costs a
85
+ * join per column read and stores every number as text.
86
+ */
87
+ props: jsonObject('props'),
88
+ /** What the server worked out from `props` — formulas and rollups — so a view can sort by one. */
89
+ computed: jsonObject('computed'),
77
90
  createdBy: uuid('created_by'),
78
91
  updatedBy: uuid('updated_by'),
79
92
  createdAt: ts('created_at').notNull().defaultNow(),
@@ -84,6 +97,8 @@ export const pages = schema.table('pages', {
84
97
  index('pages_ws_space_idx').on(t.workspaceId, t.spaceId, t.position),
85
98
  index('pages_ws_parent_idx').on(t.workspaceId, t.parentId, t.position),
86
99
  index('pages_ws_updated_idx').on(t.workspaceId, t.updatedAt),
100
+ index('pages_ws_database_idx').on(t.workspaceId, t.databaseId, t.id),
101
+ index('pages_props_idx').using('gin', t.props),
87
102
  ]);
88
103
  /**
89
104
  * What a page looked like at a moment, and the bytes to put it back.
@@ -159,6 +174,90 @@ export const comments = schema.table('comments', {
159
174
  index('comments_ws_page_idx').on(t.workspaceId, t.pageId, t.createdAt),
160
175
  index('comments_ws_thread_idx').on(t.workspaceId, t.threadId, t.createdAt),
161
176
  ]);
177
+ /**
178
+ * A table of pages with typed columns.
179
+ *
180
+ * A database is not a second kind of object beside a page: it *is* a page whose body renders a view
181
+ * instead of prose, and each of its rows is a page too. That is what makes a row openable,
182
+ * commentable, versioned and searchable for free, rather than needing all of it again.
183
+ */
184
+ export const databases = schema.table('databases', {
185
+ id: id(),
186
+ workspaceId: ws(),
187
+ spaceId: uuid('space_id').notNull(),
188
+ /** the page whose body this database is */
189
+ pageId: uuid('page_id').notNull(),
190
+ name: text('name').notNull().default(''),
191
+ description: text('description').notNull().default(''),
192
+ /** an inline database lives inside another page's prose rather than owning a page */
193
+ inline: boolean('inline').notNull().default(false),
194
+ createdAt: ts('created_at').notNull().defaultNow(),
195
+ updatedAt: ts('updated_at').notNull().defaultNow(),
196
+ }, (t) => [index('databases_ws_page_idx').on(t.workspaceId, t.pageId)]);
197
+ /**
198
+ * A column.
199
+ *
200
+ * `config` carries whatever the type needs — the options of a select, the target of a relation, the
201
+ * expression of a formula — because a column of `jsonb` is the difference between adding a property
202
+ * type and adding a migration.
203
+ */
204
+ export const properties = schema.table('properties', {
205
+ id: id(),
206
+ workspaceId: ws(),
207
+ databaseId: uuid('database_id').notNull(),
208
+ /** stable across renames; this is what a row's `props` is keyed by */
209
+ key: text('key').notNull(),
210
+ name: text('name').notNull(),
211
+ type: text('type').notNull(),
212
+ config: jsonObject('config'),
213
+ position: text('position').notNull(),
214
+ hidden: boolean('hidden').notNull().default(false),
215
+ createdAt: ts('created_at').notNull().defaultNow(),
216
+ }, (t) => [
217
+ uniqueIndex('properties_db_key_uq').on(t.workspaceId, t.databaseId, t.key),
218
+ index('properties_ws_db_idx').on(t.workspaceId, t.databaseId, t.position),
219
+ ]);
220
+ /** A saved way of looking at a database: which rows, in what order, drawn how. */
221
+ export const views = schema.table('views', {
222
+ id: id(),
223
+ workspaceId: ws(),
224
+ databaseId: uuid('database_id').notNull(),
225
+ name: text('name').notNull(),
226
+ kind: text('kind').notNull().default('table'),
227
+ /** filters, sorts, grouping, visible properties, column widths, the date property for a calendar */
228
+ config: jsonObject('config'),
229
+ position: text('position').notNull(),
230
+ isDefault: boolean('is_default').notNull().default(false),
231
+ createdAt: ts('created_at').notNull().defaultNow(),
232
+ updatedAt: ts('updated_at').notNull().defaultNow(),
233
+ }, (t) => [index('views_ws_db_idx').on(t.workspaceId, t.databaseId, t.position)]);
234
+ /**
235
+ * One end of a relation between two rows.
236
+ *
237
+ * A join table rather than an array in `props`, because a relation is symmetric: setting it from
238
+ * one side has to be visible from the other, and a rollup reads it from whichever side asked.
239
+ */
240
+ export const relations = schema.table('relations', {
241
+ id: id(),
242
+ workspaceId: ws(),
243
+ propertyId: uuid('property_id').notNull(),
244
+ fromPageId: uuid('from_page_id').notNull(),
245
+ toPageId: uuid('to_page_id').notNull(),
246
+ createdAt: ts('created_at').notNull().defaultNow(),
247
+ }, (t) => [
248
+ uniqueIndex('relations_uq').on(t.workspaceId, t.propertyId, t.fromPageId, t.toPageId),
249
+ index('relations_ws_from_idx').on(t.workspaceId, t.fromPageId),
250
+ index('relations_ws_to_idx').on(t.workspaceId, t.toPageId),
251
+ ]);
162
252
  /** Every tenant table, so the RLS migration can be checked against one list rather than memory. */
163
- export const TENANT_TABLES = ['spaces', 'pages', 'page_versions', 'comments'];
253
+ export const TENANT_TABLES = [
254
+ 'spaces',
255
+ 'pages',
256
+ 'page_versions',
257
+ 'comments',
258
+ 'databases',
259
+ 'properties',
260
+ 'views',
261
+ 'relations',
262
+ ];
164
263
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/server/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EACL,OAAO,EACP,UAAU,EACV,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,WAAW,EACX,IAAI,GACL,MAAM,qBAAqB,CAAA;AAE5B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;AAE3C,gFAAgF;AAChF,MAAM,KAAK,GAAG,UAAU,CAAuC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;AAE3F,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,aAAa,CAAC,CAAA;AACpF,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,cAAc,CAAC,CAAA;AAE3F,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,UAAU,CAAC,CAAA;AAC/D,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAA;AAC/C,MAAM,EAAE,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;AAEpE,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAChC,QAAQ,EACR;IACE,EAAE,EAAE,EAAE,EAAE;IACR,WAAW,EAAE,EAAE,EAAE;IACjB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;IAC1B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACtD,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;IAClB,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IACxD;;;;OAIG;IACH,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC;IAC/B,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;IAC7B,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IAClD,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IAClD,UAAU,EAAE,EAAE,CAAC,aAAa,CAAC;CAC9B,EACD,CAAC,CAAC,EAAE,EAAE,CAAC;IACL,WAAW,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC;IACxD,KAAK,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC;CACtD,CACF,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAC/B,OAAO,EACP;IACE,EAAE,EAAE,EAAE,EAAE;IACR,WAAW,EAAE,EAAE,EAAE;IACjB,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;IACnC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;IAC3B;;;;;;;;;;OAUG;IACH,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;IACpC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5C;;;;OAIG;IACH,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;IAC3B,kGAAkG;IAClG,kBAAkB,EAAE,IAAI,CAAC,sBAAsB,CAAC;IAChD,uFAAuF;IACvF,qBAAqB,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAClF,iGAAiG;IACjG,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;IAC7B,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;IAC7B,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IAClD,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IAClD,UAAU,EAAE,EAAE,CAAC,aAAa,CAAC;IAC7B,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC;CAC5B,EACD,CAAC,CAAC,EAAE,EAAE,CAAC;IACL,KAAK,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC;IACpE,KAAK,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC;IACtE,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC;CAC7D,CACF,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CACtC,eAAe,EACf;IACE,EAAE,EAAE,EAAE,EAAE;IACR,WAAW,EAAE,EAAE,EAAE;IACjB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;IACjC;;;;;;OAMG;IACH,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5C,6DAA6D;IAC7D,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;IACpB,8EAA8E;IAC9E,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;IAC/B,mFAAmF;IACnF,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC;IAC3B,yFAAyF;IACzF,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1C,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;IAC3B,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CACnD,EACD,CAAC,CAAC,EAAE,EAAE,CAAC;IACL,KAAK,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;IAC3E,KAAK,CAAC,8BAA8B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC;CACrE,CACF,CAAA;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAClC,UAAU,EACV;IACE,EAAE,EAAE,EAAE,EAAE;IACR,WAAW,EAAE,EAAE,EAAE;IACjB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;IACjC,8EAA8E;IAC9E,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;IAC3B;;;OAGG;IACH,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;IACrC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;IAC3B,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC;IACxB,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACjD,UAAU,EAAE,SAAS,CAAC,aAAa,CAAC;IACpC,kGAAkG;IAClG,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC;IACvB,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACrD,UAAU,EAAE,EAAE,CAAC,aAAa,CAAC;IAC7B,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC;IAC/B,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC;IACzB,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC;IAC3B,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IAClD,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CACnD,EACD,CAAC,CAAC,EAAE,EAAE,CAAC;IACL,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;IACtE,KAAK,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC;CAC3E,CACF,CAAA;AAED,mGAAmG;AACnG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,CAAU,CAAA"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/server/schema.ts"],"names":[],"mappings":"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"}
@@ -66,6 +66,9 @@ export declare function quireAccess(kernel: Kernel): {
66
66
  publishedVersionId: string | null;
67
67
  hasUnpublishedChanges: boolean;
68
68
  text: string;
69
+ databaseId: string | null;
70
+ props: unknown;
71
+ computed: unknown;
69
72
  createdBy: string | null;
70
73
  updatedBy: string | null;
71
74
  createdAt: Date;
@@ -1 +1 @@
1
- {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../../src/server/services/access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAa,KAAK,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAIhE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,0FAA0F;IAC1F,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM;IAStC,2DAA2D;wBACvC,SAAS,cAAc,MAAM,eAAe,MAAM,WAAW,MAAM;4BAI/D,SAAS,cAAc,MAAM,eAAe,MAAM,WAAW,MAAM;IAI3F;;;;OAIG;uBACgB,SAAS,cAAc,MAAM,eAAe,MAAM,SAAS,SAAS;2BAc1E,SAAS,cACR,MAAM,eACL,MAAM,SACZ,SAAS,GACf,OAAO,CAAC,IAAI,CAAC;IAKhB;;;;;;OAMG;gBACe,EAAE,eAAe,MAAM,UAAU,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAuB9E,mGAAmG;iBAChF,EAAE,eAAe,MAAM,WAAW,MAAM;;;;;;;;;;;;;;IAU3D,sEAAsE;gBACpD,EAAE,eAAe,MAAM,UAAU,MAAM,SAAQ;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;EAchG;AACD,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA"}
1
+ {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../../src/server/services/access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAa,KAAK,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAIhE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,0FAA0F;IAC1F,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM;IAStC,2DAA2D;wBACvC,SAAS,cAAc,MAAM,eAAe,MAAM,WAAW,MAAM;4BAI/D,SAAS,cAAc,MAAM,eAAe,MAAM,WAAW,MAAM;IAI3F;;;;OAIG;uBACgB,SAAS,cAAc,MAAM,eAAe,MAAM,SAAS,SAAS;2BAc1E,SAAS,cACR,MAAM,eACL,MAAM,SACZ,SAAS,GACf,OAAO,CAAC,IAAI,CAAC;IAKhB;;;;;;OAMG;gBACe,EAAE,eAAe,MAAM,UAAU,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAuB9E,mGAAmG;iBAChF,EAAE,eAAe,MAAM,WAAW,MAAM;;;;;;;;;;;;;;IAU3D,sEAAsE;gBACpD,EAAE,eAAe,MAAM,UAAU,MAAM,SAAQ;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;EAchG;AACD,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA"}
@@ -0,0 +1,330 @@
1
+ import type { Principal } from '@kernhq/contracts';
2
+ import { type Kernel, type Tx } from '@kernhq/kernel';
3
+ import type { Database, Property, Row, View, ViewConfig } from '../../contract/index.js';
4
+ import { pages, properties, views } from '../schema.js';
5
+ import type { QuireAccess } from './access.js';
6
+ type PropertyRow = typeof properties.$inferSelect;
7
+ type ViewRow = typeof views.$inferSelect;
8
+ type PageRow = typeof pages.$inferSelect;
9
+ export declare const toProperty: (r: PropertyRow) => Property;
10
+ export declare const toView: (r: ViewRow) => View;
11
+ export declare const toRow: (p: PageRow) => Row;
12
+ export declare function quireDatabases(kernel: Kernel, access: QuireAccess): {
13
+ get(tx: Tx, workspaceId: string, databaseId: string): Promise<Database>;
14
+ /**
15
+ * Create a database on a page.
16
+ *
17
+ * It arrives with a title property and a table view, because a database with no columns and no
18
+ * view is a screen with nothing on it and no obvious way forward.
19
+ */
20
+ create(tx: Tx, principal: Principal, workspaceId: string, input: {
21
+ spaceId: string;
22
+ pageId: string;
23
+ name: string;
24
+ inline: boolean;
25
+ }): Promise<{
26
+ id: string;
27
+ workspaceId: string;
28
+ spaceId: string;
29
+ pageId: string;
30
+ name: string;
31
+ description: string;
32
+ inline: boolean;
33
+ properties: {
34
+ id: string;
35
+ databaseId: string;
36
+ key: string;
37
+ name: string;
38
+ type: "number" | "date" | "email" | "text" | "select" | "multi_select" | "status" | "person" | "files" | "checkbox" | "url" | "phone" | "relation" | "rollup" | "formula" | "created_time" | "created_by" | "edited_time" | "edited_by";
39
+ config: {
40
+ options?: {
41
+ id: string;
42
+ label: string;
43
+ colour: string;
44
+ group?: "todo" | "doing" | "done" | undefined;
45
+ }[] | undefined;
46
+ format?: string | undefined;
47
+ precision?: number | undefined;
48
+ includeTime?: boolean | undefined;
49
+ isRange?: boolean | undefined;
50
+ relationDatabaseId?: string | undefined;
51
+ relationPropertyId?: string | undefined;
52
+ rollupRelationPropertyId?: string | undefined;
53
+ rollupTargetPropertyId?: string | undefined;
54
+ rollupFunction?: "count" | "count_values" | "count_unique" | "sum" | "average" | "min" | "max" | "range" | "show_original" | "checked" | "unchecked" | "percent_checked" | undefined;
55
+ expression?: string | undefined;
56
+ multiple?: boolean | undefined;
57
+ };
58
+ position: string;
59
+ hidden: boolean;
60
+ }[];
61
+ views: {
62
+ id: string;
63
+ databaseId: string;
64
+ name: string;
65
+ kind: "table" | "board" | "calendar" | "gallery" | "list" | "timeline";
66
+ config: {
67
+ filters: {
68
+ propertyKey: string;
69
+ operator: "equals" | "not_equals" | "contains" | "not_contains" | "starts_with" | "ends_with" | "is_empty" | "is_not_empty" | "greater_than" | "less_than" | "on_or_before" | "on_or_after" | "is_any_of" | "is_none_of";
70
+ value?: unknown;
71
+ }[];
72
+ filterMode: "and" | "or";
73
+ sorts: {
74
+ propertyKey: string;
75
+ direction: "asc" | "desc";
76
+ }[];
77
+ groupBy: string | null;
78
+ dateProperty: string | null;
79
+ visibleProperties: string[] | null;
80
+ columnWidths: Record<string, number>;
81
+ cardSize: "small" | "medium" | "large";
82
+ coverProperty: string | null;
83
+ };
84
+ position: string;
85
+ isDefault: boolean;
86
+ }[];
87
+ createdAt: string;
88
+ updatedAt: string;
89
+ }>;
90
+ addProperty(tx: Tx, workspaceId: string, databaseId: string, input: {
91
+ name: string;
92
+ type: Property["type"];
93
+ config?: Property["config"];
94
+ }): Promise<{
95
+ id: string;
96
+ databaseId: string;
97
+ key: string;
98
+ name: string;
99
+ type: "number" | "date" | "email" | "text" | "select" | "multi_select" | "status" | "person" | "files" | "checkbox" | "url" | "phone" | "relation" | "rollup" | "formula" | "created_time" | "created_by" | "edited_time" | "edited_by";
100
+ config: {
101
+ options?: {
102
+ id: string;
103
+ label: string;
104
+ colour: string;
105
+ group?: "todo" | "doing" | "done" | undefined;
106
+ }[] | undefined;
107
+ format?: string | undefined;
108
+ precision?: number | undefined;
109
+ includeTime?: boolean | undefined;
110
+ isRange?: boolean | undefined;
111
+ relationDatabaseId?: string | undefined;
112
+ relationPropertyId?: string | undefined;
113
+ rollupRelationPropertyId?: string | undefined;
114
+ rollupTargetPropertyId?: string | undefined;
115
+ rollupFunction?: "count" | "count_values" | "count_unique" | "sum" | "average" | "min" | "max" | "range" | "show_original" | "checked" | "unchecked" | "percent_checked" | undefined;
116
+ expression?: string | undefined;
117
+ multiple?: boolean | undefined;
118
+ };
119
+ position: string;
120
+ hidden: boolean;
121
+ }>;
122
+ /**
123
+ * Rename, retype or reconfigure a column.
124
+ *
125
+ * The `key` never changes, because it is what every row's `props` is keyed by — renaming a
126
+ * column must not empty it. That is the whole reason a key exists separately from a name.
127
+ */
128
+ updateProperty(tx: Tx, workspaceId: string, propertyId: string, patch: Partial<Pick<PropertyRow, "name" | "type" | "config" | "hidden" | "position">>): Promise<{
129
+ id: string;
130
+ databaseId: string;
131
+ key: string;
132
+ name: string;
133
+ type: "number" | "date" | "email" | "text" | "select" | "multi_select" | "status" | "person" | "files" | "checkbox" | "url" | "phone" | "relation" | "rollup" | "formula" | "created_time" | "created_by" | "edited_time" | "edited_by";
134
+ config: {
135
+ options?: {
136
+ id: string;
137
+ label: string;
138
+ colour: string;
139
+ group?: "todo" | "doing" | "done" | undefined;
140
+ }[] | undefined;
141
+ format?: string | undefined;
142
+ precision?: number | undefined;
143
+ includeTime?: boolean | undefined;
144
+ isRange?: boolean | undefined;
145
+ relationDatabaseId?: string | undefined;
146
+ relationPropertyId?: string | undefined;
147
+ rollupRelationPropertyId?: string | undefined;
148
+ rollupTargetPropertyId?: string | undefined;
149
+ rollupFunction?: "count" | "count_values" | "count_unique" | "sum" | "average" | "min" | "max" | "range" | "show_original" | "checked" | "unchecked" | "percent_checked" | undefined;
150
+ expression?: string | undefined;
151
+ multiple?: boolean | undefined;
152
+ };
153
+ position: string;
154
+ hidden: boolean;
155
+ }>;
156
+ removeProperty(tx: Tx, workspaceId: string, propertyId: string): Promise<{
157
+ id: string;
158
+ databaseId: string;
159
+ key: string;
160
+ name: string;
161
+ type: "number" | "date" | "email" | "text" | "select" | "multi_select" | "status" | "person" | "files" | "checkbox" | "url" | "phone" | "relation" | "rollup" | "formula" | "created_time" | "created_by" | "edited_time" | "edited_by";
162
+ config: {
163
+ options?: {
164
+ id: string;
165
+ label: string;
166
+ colour: string;
167
+ group?: "todo" | "doing" | "done" | undefined;
168
+ }[] | undefined;
169
+ format?: string | undefined;
170
+ precision?: number | undefined;
171
+ includeTime?: boolean | undefined;
172
+ isRange?: boolean | undefined;
173
+ relationDatabaseId?: string | undefined;
174
+ relationPropertyId?: string | undefined;
175
+ rollupRelationPropertyId?: string | undefined;
176
+ rollupTargetPropertyId?: string | undefined;
177
+ rollupFunction?: "count" | "count_values" | "count_unique" | "sum" | "average" | "min" | "max" | "range" | "show_original" | "checked" | "unchecked" | "percent_checked" | undefined;
178
+ expression?: string | undefined;
179
+ multiple?: boolean | undefined;
180
+ };
181
+ position: string;
182
+ hidden: boolean;
183
+ }>;
184
+ addView(tx: Tx, workspaceId: string, databaseId: string, input: {
185
+ name: string;
186
+ kind: View["kind"];
187
+ config?: Partial<ViewConfig>;
188
+ }): Promise<{
189
+ id: string;
190
+ databaseId: string;
191
+ name: string;
192
+ kind: "table" | "board" | "calendar" | "gallery" | "list" | "timeline";
193
+ config: {
194
+ filters: {
195
+ propertyKey: string;
196
+ operator: "equals" | "not_equals" | "contains" | "not_contains" | "starts_with" | "ends_with" | "is_empty" | "is_not_empty" | "greater_than" | "less_than" | "on_or_before" | "on_or_after" | "is_any_of" | "is_none_of";
197
+ value?: unknown;
198
+ }[];
199
+ filterMode: "and" | "or";
200
+ sorts: {
201
+ propertyKey: string;
202
+ direction: "asc" | "desc";
203
+ }[];
204
+ groupBy: string | null;
205
+ dateProperty: string | null;
206
+ visibleProperties: string[] | null;
207
+ columnWidths: Record<string, number>;
208
+ cardSize: "small" | "medium" | "large";
209
+ coverProperty: string | null;
210
+ };
211
+ position: string;
212
+ isDefault: boolean;
213
+ }>;
214
+ updateView(tx: Tx, workspaceId: string, viewId: string, patch: Partial<Pick<ViewRow, "name" | "kind" | "config" | "position">>): Promise<{
215
+ id: string;
216
+ databaseId: string;
217
+ name: string;
218
+ kind: "table" | "board" | "calendar" | "gallery" | "list" | "timeline";
219
+ config: {
220
+ filters: {
221
+ propertyKey: string;
222
+ operator: "equals" | "not_equals" | "contains" | "not_contains" | "starts_with" | "ends_with" | "is_empty" | "is_not_empty" | "greater_than" | "less_than" | "on_or_before" | "on_or_after" | "is_any_of" | "is_none_of";
223
+ value?: unknown;
224
+ }[];
225
+ filterMode: "and" | "or";
226
+ sorts: {
227
+ propertyKey: string;
228
+ direction: "asc" | "desc";
229
+ }[];
230
+ groupBy: string | null;
231
+ dateProperty: string | null;
232
+ visibleProperties: string[] | null;
233
+ columnWidths: Record<string, number>;
234
+ cardSize: "small" | "medium" | "large";
235
+ coverProperty: string | null;
236
+ };
237
+ position: string;
238
+ isDefault: boolean;
239
+ }>;
240
+ removeView(tx: Tx, workspaceId: string, viewId: string): Promise<{
241
+ id: string;
242
+ databaseId: string;
243
+ name: string;
244
+ kind: "table" | "board" | "calendar" | "gallery" | "list" | "timeline";
245
+ config: {
246
+ filters: {
247
+ propertyKey: string;
248
+ operator: "equals" | "not_equals" | "contains" | "not_contains" | "starts_with" | "ends_with" | "is_empty" | "is_not_empty" | "greater_than" | "less_than" | "on_or_before" | "on_or_after" | "is_any_of" | "is_none_of";
249
+ value?: unknown;
250
+ }[];
251
+ filterMode: "and" | "or";
252
+ sorts: {
253
+ propertyKey: string;
254
+ direction: "asc" | "desc";
255
+ }[];
256
+ groupBy: string | null;
257
+ dateProperty: string | null;
258
+ visibleProperties: string[] | null;
259
+ columnWidths: Record<string, number>;
260
+ cardSize: "small" | "medium" | "large";
261
+ coverProperty: string | null;
262
+ };
263
+ position: string;
264
+ isDefault: boolean;
265
+ }>;
266
+ /**
267
+ * The rows of a database, filtered and ordered by a view.
268
+ *
269
+ * Filtering happens in SQL rather than after the fact: a page of fifty rows filtered down to
270
+ * three is not a page of three, and the caller has no way to ask for the rest.
271
+ */
272
+ rows(tx: Tx, workspaceId: string, databaseId: string, opts: {
273
+ view?: View | null;
274
+ limit: number;
275
+ cursor: string | null;
276
+ }): Promise<{
277
+ items: {
278
+ id: string;
279
+ databaseId: string;
280
+ title: string;
281
+ icon: string | null;
282
+ props: Record<string, unknown>;
283
+ computed: Record<string, unknown>;
284
+ createdBy: (string & import("zod").$brand<"UserId">) | null;
285
+ updatedBy: (string & import("zod").$brand<"UserId">) | null;
286
+ createdAt: string;
287
+ updatedAt: string;
288
+ }[];
289
+ nextCursor: string | null;
290
+ }>;
291
+ /**
292
+ * Recompute the formulas and rollups of one row.
293
+ *
294
+ * Written into `computed` rather than calculated on read, so a view can filter and sort by a
295
+ * formula in SQL like any other column. The cost is that a change has to say what it invalidates
296
+ * — which is what `formulaDependencies` is for.
297
+ */
298
+ recompute(tx: Tx, workspaceId: string, pageId: string): Promise<Record<string, unknown> | null>;
299
+ /** Gather the values on the other side of a relation and reduce them. */
300
+ rollup(tx: Tx, workspaceId: string, pageId: string, property: Property, all: Property[]): Promise<unknown>;
301
+ /**
302
+ * Set both ends of a relation.
303
+ *
304
+ * Symmetric by construction rather than by convention: a link set from one side that is not
305
+ * visible from the other is the bug people report as "the rollup is wrong".
306
+ */
307
+ setRelation(tx: Tx, workspaceId: string, propertyId: string, fromPageId: string, toPageIds: string[]): Promise<void>;
308
+ /**
309
+ * Which other rows have to be recomputed because this one changed.
310
+ *
311
+ * Only the rows that roll up *through* a relation that reaches this one — recomputing the whole
312
+ * database on every keystroke would be correct and unusable.
313
+ */
314
+ dependentsOf(tx: Tx, workspaceId: string, pageId: string): Promise<string[]>;
315
+ /** One row, after it has been written. */
316
+ rowById(tx: Tx, workspaceId: string, pageId: string): Promise<Row>;
317
+ /**
318
+ * Write cells, merging rather than replacing.
319
+ *
320
+ * A table sends the cell somebody edited, not the whole row — replacing would blank every
321
+ * column the client happened not to know about, which is every column added since it loaded.
322
+ */
323
+ setRowFields(tx: Tx, workspaceId: string, pageId: string, databaseId: string | null, props: Record<string, unknown>): Promise<void>;
324
+ /** The columns a formula reads, so a property rename can report what it would break. */
325
+ dependenciesOf(expression: string): string[];
326
+ kernel: Kernel;
327
+ };
328
+ export type QuireDatabases = ReturnType<typeof quireDatabases>;
329
+ export {};
330
+ //# sourceMappingURL=databases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"databases.d.ts","sourceRoot":"","sources":["../../../src/server/services/databases.ts"],"names":[],"mappings":"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"}