@aphexcms/postgresql-adapter 0.1.0 → 0.1.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/LICENSE +21 -0
- package/dist/asset-adapter.d.ts +13 -1
- package/dist/asset-adapter.d.ts.map +1 -1
- package/dist/asset-adapter.js +87 -4
- package/dist/asset-adapter.js.map +1 -1
- package/dist/document-adapter.d.ts +13 -1
- package/dist/document-adapter.d.ts.map +1 -1
- package/dist/document-adapter.js +113 -3
- package/dist/document-adapter.js.map +1 -1
- package/dist/filter-parser.d.ts +36 -0
- package/dist/filter-parser.d.ts.map +1 -0
- package/dist/filter-parser.js +320 -0
- package/dist/filter-parser.js.map +1 -0
- package/dist/index.d.ts +29 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +66 -5
- package/dist/index.js.map +1 -1
- package/dist/organization-adapter.d.ts.map +1 -1
- package/dist/schema-adapter.d.ts.map +1 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +4 -24
- package/dist/schema.js.map +1 -1
- package/dist/user-adapter.d.ts.map +1 -1
- package/dist/user-adapter.js.map +1 -1
- package/package.json +42 -38
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Benjamin Sinidol
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/asset-adapter.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { drizzle } from 'drizzle-orm/postgres-js';
|
|
2
|
-
import type { AssetAdapter, AssetFilters, CreateAssetData, UpdateAssetData, Asset } from '@aphexcms/cms-core/server';
|
|
2
|
+
import type { AssetAdapter, AssetFilters, CreateAssetData, UpdateAssetData, Asset, FindOptions, FindResult, Where } from '@aphexcms/cms-core/server';
|
|
3
3
|
import type { CMSSchema } from './schema.js';
|
|
4
4
|
/**
|
|
5
5
|
* PostgreSQL asset adapter implementation
|
|
@@ -46,5 +46,17 @@ export declare class PostgreSQLAssetAdapter implements AssetAdapter {
|
|
|
46
46
|
* Get total size of all assets
|
|
47
47
|
*/
|
|
48
48
|
getTotalAssetsSize(organizationId: string): Promise<number>;
|
|
49
|
+
/**
|
|
50
|
+
* Advanced filtering - find many assets with where clause and pagination
|
|
51
|
+
*/
|
|
52
|
+
findManyAssetsAdvanced(organizationId: string, options?: FindOptions): Promise<FindResult<Asset>>;
|
|
53
|
+
/**
|
|
54
|
+
* Advanced filtering - find asset by ID
|
|
55
|
+
*/
|
|
56
|
+
findAssetByIdAdvanced(organizationId: string, id: string): Promise<Asset | null>;
|
|
57
|
+
/**
|
|
58
|
+
* Count assets matching where clause
|
|
59
|
+
*/
|
|
60
|
+
countAssetsAdvanced(organizationId: string, where?: Where): Promise<number>;
|
|
49
61
|
}
|
|
50
62
|
//# sourceMappingURL=asset-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-adapter.d.ts","sourceRoot":"","sources":["../src/asset-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,OAAO,KAAK,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,EACf,KAAK,EACL,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"asset-adapter.d.ts","sourceRoot":"","sources":["../src/asset-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,OAAO,KAAK,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,EACf,KAAK,EACL,WAAW,EACX,UAAU,EACV,KAAK,EACL,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAO1C;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,YAAY;IAC1D,OAAO,CAAC,EAAE,CAA6B;IACvC,OAAO,CAAC,MAAM,CAAY;gBAEd,EAAE,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS;IAK7D;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC;IA2BxD;;OAEG;IACG,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAiB9E;;OAEG;IACG,UAAU,CACf,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAM,GAChD,OAAO,CAAC,KAAK,EAAE,CAAC;IAkDnB;;;OAGG;IACG,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IA0C5D;;OAEG;IACG,WAAW,CAChB,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,eAAe,GACnB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAoBxB;;OAEG;IACG,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBvE;;OAEG;IACG,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAc1D;;OAEG;IACG,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAuBhF;;OAEG;IACG,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAcjE;;OAEG;IACG,sBAAsB,CAC3B,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,WAAgB,GACvB,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAuD7B;;OAEG;IACG,qBAAqB,CAC1B,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM,GACR,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAUxB;;OAEG;IACG,mBAAmB,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;CAkBjF"}
|
package/dist/asset-adapter.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { eq, desc, and, like, sql } from 'drizzle-orm';
|
|
1
|
+
import { eq, desc, and, like, sql, inArray } from 'drizzle-orm';
|
|
2
|
+
import { parseWhere, parseSort } from './filter-parser.js';
|
|
2
3
|
// Default values
|
|
3
4
|
const DEFAULT_LIMIT = 20;
|
|
4
5
|
const DEFAULT_OFFSET = 0;
|
|
@@ -63,9 +64,17 @@ export class PostgreSQLAssetAdapter {
|
|
|
63
64
|
*/
|
|
64
65
|
async findAssets(organizationId, filters = {}) {
|
|
65
66
|
try {
|
|
66
|
-
const { assetType, mimeType, search, limit = DEFAULT_LIMIT, offset = DEFAULT_OFFSET } = filters;
|
|
67
|
-
// Build query conditions
|
|
68
|
-
const conditions = [
|
|
67
|
+
const { assetType, mimeType, search, limit = DEFAULT_LIMIT, offset = DEFAULT_OFFSET, filterOrganizationIds } = filters; // Cast to any to access filterOrganizationIds
|
|
68
|
+
// Build query conditions
|
|
69
|
+
const conditions = [];
|
|
70
|
+
// If filterOrganizationIds is provided, filter by those specific orgs
|
|
71
|
+
// Otherwise filter by the current organizationId
|
|
72
|
+
if (filterOrganizationIds && filterOrganizationIds.length > 0) {
|
|
73
|
+
conditions.push(inArray(this.tables.assets.organizationId, filterOrganizationIds));
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
conditions.push(eq(this.tables.assets.organizationId, organizationId));
|
|
77
|
+
}
|
|
69
78
|
if (assetType) {
|
|
70
79
|
conditions.push(eq(this.tables.assets.assetType, assetType));
|
|
71
80
|
}
|
|
@@ -226,5 +235,79 @@ export class PostgreSQLAssetAdapter {
|
|
|
226
235
|
return 0;
|
|
227
236
|
}
|
|
228
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* Advanced filtering - find many assets with where clause and pagination
|
|
240
|
+
*/
|
|
241
|
+
async findManyAssetsAdvanced(organizationId, options = {}) {
|
|
242
|
+
const { where, limit = DEFAULT_LIMIT, offset = DEFAULT_OFFSET, sort } = options;
|
|
243
|
+
// Build base conditions
|
|
244
|
+
const baseConditions = [eq(this.tables.assets.organizationId, organizationId)];
|
|
245
|
+
// Parse where clause (assets don't have JSONB data like documents)
|
|
246
|
+
const whereCondition = parseWhere(where, this.tables.assets, 'draft');
|
|
247
|
+
// Combine conditions
|
|
248
|
+
const allConditions = whereCondition ? and(...baseConditions, whereCondition) : and(...baseConditions);
|
|
249
|
+
// Get total count
|
|
250
|
+
const countResult = await this.db
|
|
251
|
+
.select({ count: sql `count(*)` })
|
|
252
|
+
.from(this.tables.assets)
|
|
253
|
+
.where(allConditions);
|
|
254
|
+
const totalDocs = countResult[0]?.count || 0;
|
|
255
|
+
// Build query
|
|
256
|
+
let query = this.db.select().from(this.tables.assets);
|
|
257
|
+
if (allConditions) {
|
|
258
|
+
query = query.where(allConditions);
|
|
259
|
+
}
|
|
260
|
+
// Add sorting
|
|
261
|
+
const orderBy = parseSort(sort, this.tables.assets, 'draft');
|
|
262
|
+
if (orderBy.length > 0) {
|
|
263
|
+
query = query.orderBy(...orderBy);
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
// Default sort by createdAt desc
|
|
267
|
+
query = query.orderBy(desc(this.tables.assets.createdAt));
|
|
268
|
+
}
|
|
269
|
+
// Apply pagination
|
|
270
|
+
const docs = await query.limit(limit).offset(offset);
|
|
271
|
+
// Calculate pagination metadata
|
|
272
|
+
const totalPages = Math.ceil(totalDocs / limit);
|
|
273
|
+
const currentPage = Math.floor(offset / limit) + 1;
|
|
274
|
+
return {
|
|
275
|
+
docs,
|
|
276
|
+
totalDocs,
|
|
277
|
+
limit,
|
|
278
|
+
offset,
|
|
279
|
+
page: currentPage,
|
|
280
|
+
totalPages,
|
|
281
|
+
hasNextPage: currentPage < totalPages,
|
|
282
|
+
hasPrevPage: currentPage > 1
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Advanced filtering - find asset by ID
|
|
287
|
+
*/
|
|
288
|
+
async findAssetByIdAdvanced(organizationId, id) {
|
|
289
|
+
const result = await this.db
|
|
290
|
+
.select()
|
|
291
|
+
.from(this.tables.assets)
|
|
292
|
+
.where(and(eq(this.tables.assets.id, id), eq(this.tables.assets.organizationId, organizationId)))
|
|
293
|
+
.limit(1);
|
|
294
|
+
return result[0] || null;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Count assets matching where clause
|
|
298
|
+
*/
|
|
299
|
+
async countAssetsAdvanced(organizationId, where) {
|
|
300
|
+
// Build base conditions
|
|
301
|
+
const baseConditions = [eq(this.tables.assets.organizationId, organizationId)];
|
|
302
|
+
// Parse where clause
|
|
303
|
+
const whereCondition = parseWhere(where, this.tables.assets, 'draft');
|
|
304
|
+
// Combine conditions
|
|
305
|
+
const allConditions = whereCondition ? and(...baseConditions, whereCondition) : and(...baseConditions);
|
|
306
|
+
const result = await this.db
|
|
307
|
+
.select({ count: sql `count(*)` })
|
|
308
|
+
.from(this.tables.assets)
|
|
309
|
+
.where(allConditions);
|
|
310
|
+
return result[0]?.count || 0;
|
|
311
|
+
}
|
|
229
312
|
}
|
|
230
313
|
//# sourceMappingURL=asset-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-adapter.js","sourceRoot":"","sources":["../src/asset-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"asset-adapter.js","sourceRoot":"","sources":["../src/asset-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { drizzle } from 'drizzle-orm/postgres-js';
|
|
2
|
-
import type { DocumentAdapter, DocumentFilters, CreateDocumentData, Document } from '@aphexcms/cms-core/server';
|
|
2
|
+
import type { DocumentAdapter, DocumentFilters, CreateDocumentData, Document, FindOptions, FindResult, Where } from '@aphexcms/cms-core/server';
|
|
3
3
|
import type { CMSSchema } from './schema.js';
|
|
4
4
|
export declare const DOCUMENT_STATUS: {
|
|
5
5
|
DRAFT: "draft";
|
|
@@ -50,5 +50,17 @@ export declare class PostgreSQLDocumentAdapter implements DocumentAdapter {
|
|
|
50
50
|
* Get counts for all document types
|
|
51
51
|
*/
|
|
52
52
|
getDocCountsByType(organizationId: string): Promise<Record<string, number>>;
|
|
53
|
+
/**
|
|
54
|
+
* Advanced filtering - find many documents with where clause and pagination
|
|
55
|
+
*/
|
|
56
|
+
findManyDocAdvanced(organizationId: string, collectionName: string, options?: FindOptions): Promise<FindResult<Document>>;
|
|
57
|
+
/**
|
|
58
|
+
* Advanced filtering - find document by ID with options
|
|
59
|
+
*/
|
|
60
|
+
findByDocIdAdvanced(organizationId: string, id: string, options?: Partial<FindOptions>): Promise<Document | null>;
|
|
61
|
+
/**
|
|
62
|
+
* Count documents matching where clause
|
|
63
|
+
*/
|
|
64
|
+
countDocuments(organizationId: string, collectionName: string, where?: Where): Promise<number>;
|
|
53
65
|
}
|
|
54
66
|
//# sourceMappingURL=document-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-adapter.d.ts","sourceRoot":"","sources":["../src/document-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,OAAO,KAAK,EACX,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,QAAQ,EACR,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"document-adapter.d.ts","sourceRoot":"","sources":["../src/document-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,OAAO,KAAK,EACX,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,QAAQ,EACR,WAAW,EACX,UAAU,EACV,KAAK,EACL,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAS1C,eAAO,MAAM,eAAe;;;CAG3B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,WAAW,CAAC;AAEnD;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,eAAe;IAChE,OAAO,CAAC,EAAE,CAA6B;IACvC,OAAO,CAAC,MAAM,CAAY;gBAEd,EAAE,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS;IAK7D;;OAEG;IACG,WAAW,CAChB,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAM,GACnD,OAAO,CAAC,QAAQ,EAAE,CAAC;IAqDtB;;OAEG;IACG,WAAW,CAChB,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM,EACV,KAAK,GAAE,MAAU,GACf,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAyB3B;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmBjE;;OAEG;IACG,cAAc,CACnB,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,GAAG,EACT,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAqB3B;;OAEG;IACG,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgC9E;;OAEG;IACG,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAuBhF;;OAEG;IACG,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAczE;;OAEG;IACG,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAc5E;;OAEG;IACG,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAkBjF;;OAEG;IACG,mBAAmB,CACxB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,WAAgB,GACvB,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IA4EhC;;OAEG;IACG,mBAAmB,CACxB,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,OAAO,CAAC,WAAW,CAAM,GAChC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IA+B3B;;OAEG;IACG,cAAc,CACnB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,KAAK,CAAC,EAAE,KAAK,GACX,OAAO,CAAC,MAAM,CAAC;CAuBlB"}
|
package/dist/document-adapter.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { eq, and, desc, sql, inArray } from 'drizzle-orm';
|
|
2
2
|
import { createHashForPublishing } from '@aphexcms/cms-core/server';
|
|
3
3
|
import { resolveReferences } from './utils/reference-resolver.js';
|
|
4
|
+
import { parseWhere, parseSort } from './filter-parser.js';
|
|
4
5
|
// Default values
|
|
5
6
|
const DEFAULT_LIMIT = 50;
|
|
6
7
|
const DEFAULT_OFFSET = 0;
|
|
@@ -63,10 +64,16 @@ export class PostgreSQLDocumentAdapter {
|
|
|
63
64
|
* Get document by ID
|
|
64
65
|
*/
|
|
65
66
|
async findByDocId(organizationId, id, depth = 0) {
|
|
67
|
+
// Build conditions
|
|
68
|
+
const conditions = [eq(this.tables.documents.id, id)];
|
|
69
|
+
// Only filter by organizationId if provided (empty string means overrideAccess mode)
|
|
70
|
+
if (organizationId) {
|
|
71
|
+
conditions.push(eq(this.tables.documents.organizationId, organizationId));
|
|
72
|
+
}
|
|
66
73
|
const result = await this.db
|
|
67
74
|
.select()
|
|
68
75
|
.from(this.tables.documents)
|
|
69
|
-
.where(and(
|
|
76
|
+
.where(and(...conditions))
|
|
70
77
|
.limit(1);
|
|
71
78
|
const document = result[0] || null;
|
|
72
79
|
// Resolve references if depth > 0 and document exists
|
|
@@ -171,7 +178,7 @@ export class PostgreSQLDocumentAdapter {
|
|
|
171
178
|
.select({ count: sql `count(*)` })
|
|
172
179
|
.from(this.tables.documents)
|
|
173
180
|
.where(and(eq(this.tables.documents.organizationId, organizationId), eq(this.tables.documents.type, type)));
|
|
174
|
-
return result[0]?.count || 0;
|
|
181
|
+
return Number(result[0]?.count) || 0;
|
|
175
182
|
}
|
|
176
183
|
/**
|
|
177
184
|
* Get counts for all document types
|
|
@@ -187,9 +194,112 @@ export class PostgreSQLDocumentAdapter {
|
|
|
187
194
|
.groupBy(this.tables.documents.type);
|
|
188
195
|
const counts = {};
|
|
189
196
|
result.forEach((row) => {
|
|
190
|
-
counts[row.type] = row.count;
|
|
197
|
+
counts[row.type] = Number(row.count);
|
|
191
198
|
});
|
|
192
199
|
return counts;
|
|
193
200
|
}
|
|
201
|
+
/**
|
|
202
|
+
* Advanced filtering - find many documents with where clause and pagination
|
|
203
|
+
*/
|
|
204
|
+
async findManyDocAdvanced(organizationId, collectionName, options = {}) {
|
|
205
|
+
const { where, limit = DEFAULT_LIMIT, offset = DEFAULT_OFFSET, sort, depth = 0, perspective = 'draft' } = options;
|
|
206
|
+
// Build base conditions
|
|
207
|
+
const baseConditions = [eq(this.tables.documents.type, collectionName)];
|
|
208
|
+
// Only filter by organizationId if provided (empty string means overrideAccess mode)
|
|
209
|
+
if (organizationId) {
|
|
210
|
+
baseConditions.push(eq(this.tables.documents.organizationId, organizationId));
|
|
211
|
+
}
|
|
212
|
+
// Parse where clause with JSONB support
|
|
213
|
+
const whereCondition = parseWhere(where, this.tables.documents, perspective);
|
|
214
|
+
// Combine base conditions with where clause
|
|
215
|
+
const allConditions = whereCondition ? and(...baseConditions, whereCondition) : and(...baseConditions);
|
|
216
|
+
// Get total count (before pagination)
|
|
217
|
+
const countQuery = this.db
|
|
218
|
+
.select({ count: sql `count(*)` })
|
|
219
|
+
.from(this.tables.documents)
|
|
220
|
+
.where(allConditions);
|
|
221
|
+
const countResult = await countQuery;
|
|
222
|
+
const totalDocs = Number(countResult[0]?.count) || 0;
|
|
223
|
+
// Build query
|
|
224
|
+
let query = this.db.select().from(this.tables.documents);
|
|
225
|
+
if (allConditions) {
|
|
226
|
+
query = query.where(allConditions);
|
|
227
|
+
}
|
|
228
|
+
// Add sorting
|
|
229
|
+
const orderBy = parseSort(sort, this.tables.documents, perspective);
|
|
230
|
+
if (orderBy.length > 0) {
|
|
231
|
+
query = query.orderBy(...orderBy);
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
// Default sort by updatedAt desc
|
|
235
|
+
query = query.orderBy(desc(this.tables.documents.updatedAt));
|
|
236
|
+
}
|
|
237
|
+
// Apply pagination
|
|
238
|
+
const docs = await query.limit(limit).offset(offset);
|
|
239
|
+
// Resolve references if depth > 0
|
|
240
|
+
let finalDocs = docs;
|
|
241
|
+
if (depth > 0) {
|
|
242
|
+
finalDocs = (await Promise.all(docs.map((doc) => resolveReferences(doc, this, organizationId, { depth }))));
|
|
243
|
+
}
|
|
244
|
+
// Calculate pagination metadata
|
|
245
|
+
const totalPages = Math.ceil(totalDocs / limit);
|
|
246
|
+
const currentPage = Math.floor(offset / limit) + 1;
|
|
247
|
+
return {
|
|
248
|
+
docs: finalDocs,
|
|
249
|
+
totalDocs,
|
|
250
|
+
limit,
|
|
251
|
+
offset,
|
|
252
|
+
page: currentPage,
|
|
253
|
+
totalPages,
|
|
254
|
+
hasNextPage: currentPage < totalPages,
|
|
255
|
+
hasPrevPage: currentPage > 1
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Advanced filtering - find document by ID with options
|
|
260
|
+
*/
|
|
261
|
+
async findByDocIdAdvanced(organizationId, id, options = {}) {
|
|
262
|
+
const { depth = 0 } = options;
|
|
263
|
+
// Build conditions
|
|
264
|
+
const conditions = [eq(this.tables.documents.id, id)];
|
|
265
|
+
// Only filter by organizationId if provided (empty string means overrideAccess mode)
|
|
266
|
+
if (organizationId) {
|
|
267
|
+
conditions.push(eq(this.tables.documents.organizationId, organizationId));
|
|
268
|
+
}
|
|
269
|
+
const result = await this.db
|
|
270
|
+
.select()
|
|
271
|
+
.from(this.tables.documents)
|
|
272
|
+
.where(and(...conditions))
|
|
273
|
+
.limit(1);
|
|
274
|
+
if (result.length === 0) {
|
|
275
|
+
return null;
|
|
276
|
+
}
|
|
277
|
+
let doc = result[0];
|
|
278
|
+
// Resolve references if depth > 0
|
|
279
|
+
if (depth > 0) {
|
|
280
|
+
doc = (await resolveReferences(doc, this, organizationId, { depth }));
|
|
281
|
+
}
|
|
282
|
+
return doc;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Count documents matching where clause
|
|
286
|
+
*/
|
|
287
|
+
async countDocuments(organizationId, collectionName, where) {
|
|
288
|
+
// Build base conditions
|
|
289
|
+
const baseConditions = [eq(this.tables.documents.type, collectionName)];
|
|
290
|
+
// Only filter by organizationId if provided (empty string means overrideAccess mode)
|
|
291
|
+
if (organizationId) {
|
|
292
|
+
baseConditions.push(eq(this.tables.documents.organizationId, organizationId));
|
|
293
|
+
}
|
|
294
|
+
// Parse where clause with JSONB support
|
|
295
|
+
const whereCondition = parseWhere(where, this.tables.documents, 'draft');
|
|
296
|
+
// Combine conditions
|
|
297
|
+
const allConditions = whereCondition ? and(...baseConditions, whereCondition) : and(...baseConditions);
|
|
298
|
+
const result = await this.db
|
|
299
|
+
.select({ count: sql `count(*)` })
|
|
300
|
+
.from(this.tables.documents)
|
|
301
|
+
.where(allConditions);
|
|
302
|
+
return Number(result[0]?.count) || 0;
|
|
303
|
+
}
|
|
194
304
|
}
|
|
195
305
|
//# sourceMappingURL=document-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-adapter.js","sourceRoot":"","sources":["../src/document-adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"document-adapter.js","sourceRoot":"","sources":["../src/document-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { SQL } from 'drizzle-orm';
|
|
2
|
+
import type { Where } from '@aphexcms/cms-core/server';
|
|
3
|
+
/**
|
|
4
|
+
* Parse a Where clause into Drizzle SQL conditions
|
|
5
|
+
*
|
|
6
|
+
* @param where - The where filter object
|
|
7
|
+
* @param table - The Drizzle table object
|
|
8
|
+
* @param perspective - Which JSONB column to query ('draft' or 'published')
|
|
9
|
+
* @returns SQL condition
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const condition = parseWhere(
|
|
14
|
+
* {
|
|
15
|
+
* status: { equals: 'published' },
|
|
16
|
+
* title: { contains: 'blog' }
|
|
17
|
+
* },
|
|
18
|
+
* documentsTable,
|
|
19
|
+
* 'draft'
|
|
20
|
+
* );
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare function parseWhere(where: Where | undefined, table: any, // PgTable type - use any for flexibility
|
|
24
|
+
perspective?: 'draft' | 'published'): SQL | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Parse a sort string or array into Drizzle order by clauses
|
|
27
|
+
*
|
|
28
|
+
* @param sort - Sort string or array of sort strings
|
|
29
|
+
* - Format: 'field' (ascending) or '-field' (descending)
|
|
30
|
+
* - Example: '-publishedAt' or ['title', '-createdAt']
|
|
31
|
+
* @param table - The Drizzle table object
|
|
32
|
+
* @param perspective - Which JSONB column to query for non-column fields
|
|
33
|
+
* @returns Array of SQL order by clauses
|
|
34
|
+
*/
|
|
35
|
+
export declare function parseSort(sort: string | string[] | undefined, table: any, perspective?: 'draft' | 'published'): SQL[];
|
|
36
|
+
//# sourceMappingURL=filter-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-parser.d.ts","sourceRoot":"","sources":["../src/filter-parser.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,GAAG,EAgBH,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,2BAA2B,CAAC;AAmBpE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,UAAU,CACzB,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,KAAK,EAAE,GAAG,EAAE,yCAAyC;AACrD,WAAW,GAAE,OAAO,GAAG,WAAqB,GAC1C,GAAG,GAAG,SAAS,CAiDjB;AAiOD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACxB,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,EACnC,KAAK,EAAE,GAAG,EACV,WAAW,GAAE,OAAO,GAAG,WAAqB,GAC1C,GAAG,EAAE,CA6CP"}
|