@byline/db-postgres 0.9.3

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 (99) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +18 -0
  3. package/dist/database/schema/auth.d.ts +857 -0
  4. package/dist/database/schema/auth.d.ts.map +1 -0
  5. package/dist/database/schema/auth.js +176 -0
  6. package/dist/database/schema/auth.js.map +1 -0
  7. package/dist/database/schema/index.d.ts +2955 -0
  8. package/dist/database/schema/index.d.ts.map +1 -0
  9. package/dist/database/schema/index.js +500 -0
  10. package/dist/database/schema/index.js.map +1 -0
  11. package/dist/index.d.ts +31 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +30 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/lib/test-helper.d.ts +17 -0
  16. package/dist/lib/test-helper.d.ts.map +1 -0
  17. package/dist/lib/test-helper.js +47 -0
  18. package/dist/lib/test-helper.js.map +1 -0
  19. package/dist/modules/admin/admin-permissions-repository.d.ts +17 -0
  20. package/dist/modules/admin/admin-permissions-repository.d.ts.map +1 -0
  21. package/dist/modules/admin/admin-permissions-repository.js +76 -0
  22. package/dist/modules/admin/admin-permissions-repository.js.map +1 -0
  23. package/dist/modules/admin/admin-roles-repository.d.ts +12 -0
  24. package/dist/modules/admin/admin-roles-repository.d.ts.map +1 -0
  25. package/dist/modules/admin/admin-roles-repository.js +168 -0
  26. package/dist/modules/admin/admin-roles-repository.js.map +1 -0
  27. package/dist/modules/admin/admin-store.d.ts +20 -0
  28. package/dist/modules/admin/admin-store.d.ts.map +1 -0
  29. package/dist/modules/admin/admin-store.js +28 -0
  30. package/dist/modules/admin/admin-store.js.map +1 -0
  31. package/dist/modules/admin/admin-users-repository.d.ts +12 -0
  32. package/dist/modules/admin/admin-users-repository.d.ts.map +1 -0
  33. package/dist/modules/admin/admin-users-repository.js +208 -0
  34. package/dist/modules/admin/admin-users-repository.js.map +1 -0
  35. package/dist/modules/admin/index.d.ts +27 -0
  36. package/dist/modules/admin/index.d.ts.map +1 -0
  37. package/dist/modules/admin/index.js +27 -0
  38. package/dist/modules/admin/index.js.map +1 -0
  39. package/dist/modules/admin/refresh-tokens-repository.d.ts +16 -0
  40. package/dist/modules/admin/refresh-tokens-repository.d.ts.map +1 -0
  41. package/dist/modules/admin/refresh-tokens-repository.js +132 -0
  42. package/dist/modules/admin/refresh-tokens-repository.js.map +1 -0
  43. package/dist/modules/admin/tests/auth-integration.test.d.ts +9 -0
  44. package/dist/modules/admin/tests/auth-integration.test.d.ts.map +1 -0
  45. package/dist/modules/admin/tests/auth-integration.test.js +392 -0
  46. package/dist/modules/admin/tests/auth-integration.test.js.map +1 -0
  47. package/dist/modules/admin/tests/session-provider.test.d.ts +9 -0
  48. package/dist/modules/admin/tests/session-provider.test.d.ts.map +1 -0
  49. package/dist/modules/admin/tests/session-provider.test.js +370 -0
  50. package/dist/modules/admin/tests/session-provider.test.js.map +1 -0
  51. package/dist/modules/storage/@types.d.ts +116 -0
  52. package/dist/modules/storage/@types.d.ts.map +1 -0
  53. package/dist/modules/storage/@types.js +9 -0
  54. package/dist/modules/storage/@types.js.map +1 -0
  55. package/dist/modules/storage/storage-commands.d.ts +136 -0
  56. package/dist/modules/storage/storage-commands.d.ts.map +1 -0
  57. package/dist/modules/storage/storage-commands.js +272 -0
  58. package/dist/modules/storage/storage-commands.js.map +1 -0
  59. package/dist/modules/storage/storage-flatten.d.ts +19 -0
  60. package/dist/modules/storage/storage-flatten.d.ts.map +1 -0
  61. package/dist/modules/storage/storage-flatten.js +261 -0
  62. package/dist/modules/storage/storage-flatten.js.map +1 -0
  63. package/dist/modules/storage/storage-insert.d.ts +22 -0
  64. package/dist/modules/storage/storage-insert.d.ts.map +1 -0
  65. package/dist/modules/storage/storage-insert.js +115 -0
  66. package/dist/modules/storage/storage-insert.js.map +1 -0
  67. package/dist/modules/storage/storage-queries.d.ts +377 -0
  68. package/dist/modules/storage/storage-queries.d.ts.map +1 -0
  69. package/dist/modules/storage/storage-queries.js +976 -0
  70. package/dist/modules/storage/storage-queries.js.map +1 -0
  71. package/dist/modules/storage/storage-restore.d.ts +19 -0
  72. package/dist/modules/storage/storage-restore.d.ts.map +1 -0
  73. package/dist/modules/storage/storage-restore.js +350 -0
  74. package/dist/modules/storage/storage-restore.js.map +1 -0
  75. package/dist/modules/storage/storage-store-manifest.d.ts +71 -0
  76. package/dist/modules/storage/storage-store-manifest.d.ts.map +1 -0
  77. package/dist/modules/storage/storage-store-manifest.js +294 -0
  78. package/dist/modules/storage/storage-store-manifest.js.map +1 -0
  79. package/dist/modules/storage/storage-utils.d.ts +23 -0
  80. package/dist/modules/storage/storage-utils.d.ts.map +1 -0
  81. package/dist/modules/storage/storage-utils.js +72 -0
  82. package/dist/modules/storage/storage-utils.js.map +1 -0
  83. package/dist/modules/storage/tests/storage-field-types.test.d.ts +9 -0
  84. package/dist/modules/storage/tests/storage-field-types.test.d.ts.map +1 -0
  85. package/dist/modules/storage/tests/storage-field-types.test.js +146 -0
  86. package/dist/modules/storage/tests/storage-field-types.test.js.map +1 -0
  87. package/dist/modules/storage/tests/storage-flatten-reconstruct.test.d.ts +9 -0
  88. package/dist/modules/storage/tests/storage-flatten-reconstruct.test.d.ts.map +1 -0
  89. package/dist/modules/storage/tests/storage-flatten-reconstruct.test.js +327 -0
  90. package/dist/modules/storage/tests/storage-flatten-reconstruct.test.js.map +1 -0
  91. package/dist/modules/storage/tests/storage-store-manifest.test.d.ts +9 -0
  92. package/dist/modules/storage/tests/storage-store-manifest.test.d.ts.map +1 -0
  93. package/dist/modules/storage/tests/storage-store-manifest.test.js +141 -0
  94. package/dist/modules/storage/tests/storage-store-manifest.test.js.map +1 -0
  95. package/dist/modules/storage/tests/storage-versioning.test.d.ts +9 -0
  96. package/dist/modules/storage/tests/storage-versioning.test.d.ts.map +1 -0
  97. package/dist/modules/storage/tests/storage-versioning.test.js +336 -0
  98. package/dist/modules/storage/tests/storage-versioning.test.js.map +1 -0
  99. package/package.json +81 -0
@@ -0,0 +1,377 @@
1
+ /**
2
+ * This Source Code is subject to the terms of the Mozilla Public
3
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
+ *
6
+ * Copyright (c) Infonomic Company Limited
7
+ */
8
+ import type { CollectionDefinition, DocumentFilter, FieldSort, ICollectionQueries, IDocumentQueries, ReadMode } from '@byline/core';
9
+ import type { NodePgDatabase } from 'drizzle-orm/node-postgres';
10
+ import type * as schema from '../../database/schema/index.js';
11
+ type DatabaseConnection = NodePgDatabase<typeof schema>;
12
+ /**
13
+ * CollectionQueries
14
+ */
15
+ export declare class CollectionQueries implements ICollectionQueries {
16
+ private db;
17
+ constructor(db: DatabaseConnection);
18
+ getAllCollections(): Promise<{
19
+ id: string;
20
+ path: string;
21
+ singular: string;
22
+ plural: string;
23
+ config: unknown;
24
+ version: number;
25
+ schema_hash: string | null;
26
+ created_at: Date | null;
27
+ updated_at: Date | null;
28
+ }[]>;
29
+ getCollectionByPath(path: string): Promise<{
30
+ id: string;
31
+ created_at: Date | null;
32
+ updated_at: Date | null;
33
+ path: string;
34
+ singular: string;
35
+ plural: string;
36
+ config: unknown;
37
+ version: number;
38
+ schema_hash: string | null;
39
+ } | undefined>;
40
+ getCollectionById(id: string): Promise<{
41
+ id: string;
42
+ created_at: Date | null;
43
+ updated_at: Date | null;
44
+ path: string;
45
+ singular: string;
46
+ plural: string;
47
+ config: unknown;
48
+ version: number;
49
+ schema_hash: string | null;
50
+ } | undefined>;
51
+ }
52
+ /**
53
+ * DocumentQueries
54
+ */
55
+ export declare class DocumentQueries implements IDocumentQueries {
56
+ private db;
57
+ private collections;
58
+ private collectionPathCache;
59
+ constructor(db: DatabaseConnection, collections: CollectionDefinition[]);
60
+ /**
61
+ * Resolve a collection UUID to its CollectionDefinition by looking up the
62
+ * collection's path in the DB and matching it against the injected array.
63
+ */
64
+ private getDefinitionForCollection;
65
+ /**
66
+ * Pick the Drizzle view reference to read from based on `readMode`.
67
+ *
68
+ * - `'any'` (default) → `current_documents` — the latest version of
69
+ * each logical document, regardless of status.
70
+ * - `'published'` → `current_published_documents` — the latest
71
+ * version whose status is `'published'`, falling back past newer
72
+ * drafts so public readers keep seeing previously-published
73
+ * content while editors work on an unpublished draft.
74
+ *
75
+ * Both views share the same row shape, so the returned reference is
76
+ * drop-in substitutable at every select/where site.
77
+ */
78
+ private pickCurrentView;
79
+ /**
80
+ * Reconstruct document fields from unified row values using schema-aware
81
+ * restoration. Meta rows (from store_meta) are converted to
82
+ * FlattenedFieldValue entries so that restoreFieldSetData can inject
83
+ * _id and _type for blocks and array items inline.
84
+ */
85
+ private reconstructFromUnifiedRows;
86
+ /**
87
+ * getCurrentVersionMetadata — narrow metadata fetch for the current version.
88
+ *
89
+ * Hits `current_documents` only; no field reconstruction, no meta fetch.
90
+ * Used by lifecycle operations (status changes, delete checks) that need
91
+ * `document_version_id` / `status` / `path` but not the document body.
92
+ */
93
+ getCurrentVersionMetadata({ collection_id, document_id, }: {
94
+ collection_id: string;
95
+ document_id: string;
96
+ }): Promise<{
97
+ document_version_id: string;
98
+ document_id: string;
99
+ collection_id: string;
100
+ path: string;
101
+ status: string;
102
+ created_at: Date;
103
+ updated_at: Date;
104
+ } | null>;
105
+ /**
106
+ * getDocumentById — gets the current version of a document by its logical document ID.
107
+ */
108
+ getDocumentById({ collection_id, document_id, locale, reconstruct, readMode, filters, }: {
109
+ collection_id: string;
110
+ document_id: string;
111
+ locale?: string;
112
+ reconstruct?: boolean;
113
+ readMode?: ReadMode;
114
+ filters?: DocumentFilter[];
115
+ }): Promise<{
116
+ document_version_id: string;
117
+ document_id: string;
118
+ path: string;
119
+ status: string | null;
120
+ created_at: Date | null;
121
+ updated_at: Date | null;
122
+ fields: any;
123
+ } | null>;
124
+ getDocumentByPath({ collection_id, path, locale, reconstruct, readMode, filters, }: {
125
+ collection_id: string;
126
+ path: string;
127
+ locale?: string;
128
+ reconstruct: boolean;
129
+ readMode?: ReadMode;
130
+ filters?: DocumentFilter[];
131
+ }): Promise<{
132
+ document_version_id: string;
133
+ document_id: string;
134
+ path: string;
135
+ status: string | null;
136
+ created_at: Date | null;
137
+ updated_at: Date | null;
138
+ fields: any;
139
+ } | null>;
140
+ /**
141
+ * getDocumentByVersion — fetches a specific version and reconstructs its fields.
142
+ */
143
+ getDocumentByVersion({ document_version_id, locale, }: {
144
+ document_version_id: string;
145
+ locale?: string;
146
+ }): Promise<any>;
147
+ /**
148
+ * getDocumentsByVersionIds — fetches and reconstructs multiple documents by
149
+ * version ID. Used for batch loading a known set of versions (e.g.
150
+ * migration scripts, tests).
151
+ */
152
+ getDocumentsByVersionIds({ document_version_ids, locale, }: {
153
+ document_version_ids: string[];
154
+ locale?: string;
155
+ }): Promise<any[]>;
156
+ /**
157
+ * getDocumentsByDocumentIds — batch-fetch current versions for a list of
158
+ * logical document IDs, with optional selective field loading.
159
+ *
160
+ * Resolves each document_id to its current version via the
161
+ * `current_documents` view (soft-deleted documents are excluded by the
162
+ * view definition), then delegates to `reconstructDocuments` for the
163
+ * shared field + meta reconstruction path.
164
+ *
165
+ * Primary consumer is the client API's relationship populate pass —
166
+ * `store_relation` rows carry `target_document_id` (not version ID), so
167
+ * populate collects those IDs and resolves them here in one round trip.
168
+ */
169
+ getDocumentsByDocumentIds({ collection_id, document_ids, locale, fields, readMode, filters, }: {
170
+ collection_id: string;
171
+ document_ids: string[];
172
+ locale?: string;
173
+ fields?: string[];
174
+ readMode?: ReadMode;
175
+ filters?: DocumentFilter[];
176
+ }): Promise<any[]>;
177
+ /**
178
+ * getDocumentHistory — paginated version history for a document,
179
+ * including soft-deleted versions.
180
+ */
181
+ getDocumentHistory({ collection_id, document_id, locale, page, page_size, order, desc, }: {
182
+ collection_id: string;
183
+ document_id: string;
184
+ locale?: string;
185
+ page?: number;
186
+ page_size?: number;
187
+ order?: string;
188
+ desc?: boolean;
189
+ query?: string;
190
+ }): Promise<{
191
+ documents: any[];
192
+ meta: {
193
+ total: number;
194
+ page: number;
195
+ page_size: number;
196
+ total_pages: number;
197
+ order: string;
198
+ desc: boolean;
199
+ };
200
+ }>;
201
+ /**
202
+ * getPublishedVersion
203
+ *
204
+ * Find the latest version of a document that has a specific status
205
+ * (defaults to 'published'). Queries `document_versions` directly so it
206
+ * can find a published version even when a newer draft exists.
207
+ *
208
+ * Returns minimal version metadata (not reconstructed content), or null
209
+ * if no version with the requested status exists.
210
+ */
211
+ getPublishedVersion({ collection_id, document_id, status, }: {
212
+ collection_id: string;
213
+ document_id: string;
214
+ status?: string;
215
+ }): Promise<{
216
+ document_version_id: string;
217
+ document_id: string;
218
+ status: string;
219
+ created_at: Date;
220
+ updated_at: Date;
221
+ } | null>;
222
+ /**
223
+ * getPublishedDocumentIds
224
+ *
225
+ * Given a list of document IDs, return the subset that have at least one
226
+ * version with the requested status (defaults to 'published'). Uses a
227
+ * single batch query instead of per-document lookups.
228
+ */
229
+ getPublishedDocumentIds({ collection_id, document_ids, status, }: {
230
+ collection_id: string;
231
+ document_ids: string[];
232
+ status?: string;
233
+ }): Promise<Set<string>>;
234
+ /**
235
+ * getDocumentCountsByStatus
236
+ *
237
+ * Returns a count of current documents grouped by workflow status for a
238
+ * given collection. Uses the `current_documents` view so each logical
239
+ * document is counted once (at its latest/current version).
240
+ */
241
+ getDocumentCountsByStatus({ collection_id, filters, }: {
242
+ collection_id: string;
243
+ filters?: DocumentFilter[];
244
+ }): Promise<Array<{
245
+ status: string;
246
+ count: number;
247
+ }>>;
248
+ /**
249
+ * reconstructDocuments — retrieve field values and reconstruct multiple documents.
250
+ * Supports selective field loading via the `fields` parameter.
251
+ */
252
+ private reconstructDocuments;
253
+ /**
254
+ * Gets all field values for a single document version.
255
+ * Delegates to the multi-version dynamic UNION ALL builder.
256
+ */
257
+ private getAllFieldValues;
258
+ /**
259
+ * Gets field values for multiple versions in a single query.
260
+ *
261
+ * When `storeTypes` is provided, only those store tables are included in
262
+ * the UNION ALL — this is the selective field loading optimisation for
263
+ * list views that only need a subset of fields.
264
+ */
265
+ private getAllFieldValuesForMultipleVersions;
266
+ /**
267
+ * findDocuments — field-level filtered, sorted, paginated query.
268
+ *
269
+ * Each `FieldFilter` becomes an EXISTS subquery against the appropriate EAV
270
+ * store table. A `RelationFilter` becomes a nested EXISTS that joins
271
+ * `store_relation` to the target collection's current-documents view
272
+ * (selected by `readMode` so draft leaks can't happen through filter
273
+ * predicates) and recurses into its own `nested` filters. A `FieldSort`
274
+ * becomes a LEFT JOIN LATERAL to pull the sort value into the outer query.
275
+ * Document-level conditions (status, path) are applied directly on the
276
+ * current_documents view.
277
+ */
278
+ findDocuments({ collection_id, filters, status, pathFilter, query, sort, orderBy, orderDirection, locale, page, pageSize, fields: requestedFields, readMode, }: {
279
+ collection_id: string;
280
+ filters?: DocumentFilter[];
281
+ status?: string;
282
+ pathFilter?: {
283
+ operator: string;
284
+ value: string;
285
+ };
286
+ query?: string;
287
+ sort?: FieldSort;
288
+ orderBy?: string;
289
+ orderDirection?: 'asc' | 'desc';
290
+ locale?: string;
291
+ page?: number;
292
+ pageSize?: number;
293
+ fields?: string[];
294
+ readMode?: ReadMode;
295
+ }): Promise<{
296
+ documents: any[];
297
+ total: number;
298
+ }>;
299
+ /**
300
+ * Build an EXISTS subquery for a single DocumentFilter. Dispatches on
301
+ * `kind` — field filters emit a direct EXISTS against the field's EAV
302
+ * store; relation filters emit a nested EXISTS that joins through
303
+ * `store_relation` to the target collection's current-documents view
304
+ * and recurses against the target's own stores; combinator filters
305
+ * emit a parenthesised AND/OR group; document-column filters emit a
306
+ * direct comparison on the outer scope's status/path column.
307
+ *
308
+ * `outerScope` carries SQL references to the enclosing scope's
309
+ * `document_version_id`, `status`, and `path` — `d.id`/`d.status`/
310
+ * `d.path` at the top level, the equivalent column references on the
311
+ * Drizzle view for single-doc lookups, and `td${n}.…` inside relation
312
+ * hops. `depth` is the current relation-nesting level; each relation
313
+ * hop bumps it so aliases stay unique across nested EXISTS scopes
314
+ * (Postgres would otherwise resolve `td.id` to the innermost `td`,
315
+ * silently producing the wrong rows).
316
+ */
317
+ private buildFilterExists;
318
+ /**
319
+ * Build a parenthesised AND/OR group from a CombinatorFilter. Each child
320
+ * compiles through `buildFilterExists` recursively, so combinators nest
321
+ * freely and inherit the outer scope.
322
+ *
323
+ * An empty `children` array would emit `()` and produce a syntax error,
324
+ * so callers (the parser) skip empty groups; this method assumes at
325
+ * least one child by construction.
326
+ */
327
+ private buildCombinatorGroup;
328
+ /**
329
+ * Compile a `DocumentColumnFilter` against the outer scope's status or
330
+ * path column. Plain comparison — no EXISTS — because the column lives
331
+ * directly on the outer relation (`document_versions` row), not in the
332
+ * EAV stores.
333
+ */
334
+ private buildDocColumnFilter;
335
+ /**
336
+ * Build an EXISTS subquery for a single field-level filter.
337
+ */
338
+ private buildFieldExists;
339
+ /**
340
+ * Build a nested EXISTS subquery for a cross-collection relation filter.
341
+ *
342
+ * Joins `store_relation` to the target collection's current-documents
343
+ * view (`current_published_documents` under `readMode: 'published'`,
344
+ * `current_documents` otherwise — so a draft target doesn't leak when
345
+ * the outer read is in published mode), then recurses each nested
346
+ * filter against the target version's own `td.id`.
347
+ *
348
+ * With no nested filters this reduces to "source has any relation row
349
+ * at all on this field pointing at a target that resolves in the
350
+ * selected view" — useful as a base case but more typically the
351
+ * nested list carries a predicate.
352
+ */
353
+ private buildRelationExists;
354
+ /**
355
+ * Build a comparison condition for a filter operator.
356
+ */
357
+ private buildFilterCondition;
358
+ /**
359
+ * Build a condition for a document-level column (status, path).
360
+ */
361
+ private buildDocumentLevelCondition;
362
+ /**
363
+ * Build an ORDER BY clause for a document-level column.
364
+ */
365
+ private buildDocumentOrderClause;
366
+ /**
367
+ * Converts a union field row - back into an array of FlattenedStore
368
+ * that the reconstruction utilities expect
369
+ */
370
+ private convertUnionRowToFlattenedStores;
371
+ }
372
+ export declare function createQueryBuilders(db: DatabaseConnection, collections: CollectionDefinition[]): {
373
+ collections: CollectionQueries;
374
+ documents: DocumentQueries;
375
+ };
376
+ export {};
377
+ //# sourceMappingURL=storage-queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-queries.d.ts","sourceRoot":"","sources":["../../../src/modules/storage/storage-queries.ts"],"names":[],"mappings":"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"}