@payloadcms/drizzle 3.24.0-canary.f229d8d → 3.24.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.
- package/dist/find/traverseFields.d.ts +2 -2
- package/dist/find/traverseFields.d.ts.map +1 -1
- package/dist/find/traverseFields.js +216 -89
- package/dist/find/traverseFields.js.map +1 -1
- package/dist/postgres/countDistinct.d.ts.map +1 -1
- package/dist/postgres/countDistinct.js +14 -13
- package/dist/postgres/countDistinct.js.map +1 -1
- package/dist/queries/buildAndOrConditions.d.ts +2 -1
- package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
- package/dist/queries/buildAndOrConditions.js +2 -1
- package/dist/queries/buildAndOrConditions.js.map +1 -1
- package/dist/queries/buildOrderBy.d.ts +2 -1
- package/dist/queries/buildOrderBy.d.ts.map +1 -1
- package/dist/queries/buildOrderBy.js +2 -1
- package/dist/queries/buildOrderBy.js.map +1 -1
- package/dist/queries/buildQuery.d.ts +2 -1
- package/dist/queries/buildQuery.d.ts.map +1 -1
- package/dist/queries/buildQuery.js +3 -1
- package/dist/queries/buildQuery.js.map +1 -1
- package/dist/queries/getTableColumnFromPath.d.ts +2 -1
- package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
- package/dist/queries/getTableColumnFromPath.js +52 -27
- package/dist/queries/getTableColumnFromPath.js.map +1 -1
- package/dist/queries/parseParams.d.ts +2 -1
- package/dist/queries/parseParams.d.ts.map +1 -1
- package/dist/queries/parseParams.js +3 -1
- package/dist/queries/parseParams.js.map +1 -1
- package/dist/schema/build.d.ts +2 -1
- package/dist/schema/build.d.ts.map +1 -1
- package/dist/schema/build.js +2 -1
- package/dist/schema/build.js.map +1 -1
- package/dist/schema/buildRawSchema.d.ts.map +1 -1
- package/dist/schema/buildRawSchema.js +4 -0
- package/dist/schema/buildRawSchema.js.map +1 -1
- package/dist/schema/traverseFields.d.ts +2 -1
- package/dist/schema/traverseFields.d.ts.map +1 -1
- package/dist/schema/traverseFields.js +30 -15
- package/dist/schema/traverseFields.js.map +1 -1
- package/dist/transform/read/index.d.ts +2 -1
- package/dist/transform/read/index.d.ts.map +1 -1
- package/dist/transform/read/index.js +2 -1
- package/dist/transform/read/index.js.map +1 -1
- package/dist/transform/read/traverseFields.d.ts +2 -1
- package/dist/transform/read/traverseFields.d.ts.map +1 -1
- package/dist/transform/read/traverseFields.js +33 -16
- package/dist/transform/read/traverseFields.js.map +1 -1
- package/dist/transform/write/array.d.ts +2 -1
- package/dist/transform/write/array.d.ts.map +1 -1
- package/dist/transform/write/array.js +7 -2
- package/dist/transform/write/array.js.map +1 -1
- package/dist/transform/write/blocks.d.ts +2 -1
- package/dist/transform/write/blocks.d.ts.map +1 -1
- package/dist/transform/write/blocks.js +7 -2
- package/dist/transform/write/blocks.js.map +1 -1
- package/dist/transform/write/index.d.ts +2 -1
- package/dist/transform/write/index.d.ts.map +1 -1
- package/dist/transform/write/index.js +2 -1
- package/dist/transform/write/index.js.map +1 -1
- package/dist/transform/write/traverseFields.d.ts +2 -1
- package/dist/transform/write/traverseFields.d.ts.map +1 -1
- package/dist/transform/write/traverseFields.js +22 -12
- package/dist/transform/write/traverseFields.js.map +1 -1
- package/dist/utilities/hasLocalesTable.d.ts +7 -1
- package/dist/utilities/hasLocalesTable.d.ts.map +1 -1
- package/dist/utilities/hasLocalesTable.js +14 -5
- package/dist/utilities/hasLocalesTable.js.map +1 -1
- package/dist/utilities/validateExistingBlockIsIdentical.d.ts +5 -1
- package/dist/utilities/validateExistingBlockIsIdentical.d.ts.map +1 -1
- package/dist/utilities/validateExistingBlockIsIdentical.js +22 -7
- package/dist/utilities/validateExistingBlockIsIdentical.js.map +1 -1
- package/package.json +3 -3
|
@@ -12,6 +12,7 @@ type TraverseFieldArgs = {
|
|
|
12
12
|
joinQuery: JoinQuery;
|
|
13
13
|
joins?: BuildQueryJoinAliases;
|
|
14
14
|
locale?: string;
|
|
15
|
+
parentIsLocalized?: boolean;
|
|
15
16
|
path: string;
|
|
16
17
|
select?: SelectType;
|
|
17
18
|
selectAllOnCurrentLevel?: boolean;
|
|
@@ -20,13 +21,12 @@ type TraverseFieldArgs = {
|
|
|
20
21
|
topLevelArgs: Record<string, unknown>;
|
|
21
22
|
topLevelTableName: string;
|
|
22
23
|
versions?: boolean;
|
|
23
|
-
withinLocalizedField?: boolean;
|
|
24
24
|
withTabledFields: {
|
|
25
25
|
numbers?: boolean;
|
|
26
26
|
rels?: boolean;
|
|
27
27
|
texts?: boolean;
|
|
28
28
|
};
|
|
29
29
|
};
|
|
30
|
-
export declare const traverseFields: ({ _locales, adapter, collectionSlug, currentArgs, currentTableName, depth, fields, joinQuery, joins, locale, path, select, selectAllOnCurrentLevel, selectMode, tablePath, topLevelArgs, topLevelTableName, versions,
|
|
30
|
+
export declare const traverseFields: ({ _locales, adapter, collectionSlug, currentArgs, currentTableName, depth, fields, joinQuery, joins, locale, parentIsLocalized, path, select, selectAllOnCurrentLevel, selectMode, tablePath, topLevelArgs, topLevelTableName, versions, withTabledFields, }: TraverseFieldArgs) => Record<string, unknown>;
|
|
31
31
|
export {};
|
|
32
32
|
//# sourceMappingURL=traverseFields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/find/traverseFields.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/find/traverseFields.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAS,MAAM,SAAS,CAAA;AAMvF,OAAO,KAAK,EAAE,qBAAqB,EAAkB,cAAc,EAAE,MAAM,aAAa,CAAA;AACxF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AA+CpD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,cAAc,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,SAAS,EAAE,SAAS,CAAA;IACpB,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE;QAChB,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,KAAK,CAAC,EAAE,OAAO,CAAA;KAChB,CAAA;CACF,CAAA;AAED,eAAO,MAAM,cAAc,iQAqBxB,iBAAiB,4BAkoBnB,CAAA"}
|
|
@@ -1,20 +1,63 @@
|
|
|
1
|
-
import { sql } from 'drizzle-orm';
|
|
2
|
-
import { fieldIsVirtual } from 'payload/shared';
|
|
1
|
+
import { and, asc, desc, eq, or, sql } from 'drizzle-orm';
|
|
2
|
+
import { fieldIsVirtual, fieldShouldBeLocalized } from 'payload/shared';
|
|
3
3
|
import toSnakeCase from 'to-snake-case';
|
|
4
4
|
import buildQuery from '../queries/buildQuery.js';
|
|
5
5
|
import { getTableAlias } from '../queries/getTableAlias.js';
|
|
6
|
+
import { operatorMap } from '../queries/operatorMap.js';
|
|
6
7
|
import { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js';
|
|
7
8
|
import { jsonAggBuildObject } from '../utilities/json.js';
|
|
8
9
|
import { rawConstraint } from '../utilities/rawConstraint.js';
|
|
9
10
|
import { chainMethods } from './chainMethods.js';
|
|
10
|
-
|
|
11
|
+
const flattenAllWherePaths = (where, paths)=>{
|
|
12
|
+
for(const k in where){
|
|
13
|
+
if ([
|
|
14
|
+
'AND',
|
|
15
|
+
'OR'
|
|
16
|
+
].includes(k.toUpperCase())) {
|
|
17
|
+
if (Array.isArray(where[k])) {
|
|
18
|
+
for (const whereField of where[k]){
|
|
19
|
+
flattenAllWherePaths(whereField, paths);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
} else {
|
|
23
|
+
// TODO: explore how to support arrays/relationship querying.
|
|
24
|
+
paths.push(k.split('.').join('_'));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const buildSQLWhere = (where, alias)=>{
|
|
29
|
+
for(const k in where){
|
|
30
|
+
if ([
|
|
31
|
+
'AND',
|
|
32
|
+
'OR'
|
|
33
|
+
].includes(k.toUpperCase())) {
|
|
34
|
+
if (Array.isArray(where[k])) {
|
|
35
|
+
const op = 'AND' === k.toUpperCase() ? and : or;
|
|
36
|
+
const accumulated = [];
|
|
37
|
+
for (const whereField of where[k]){
|
|
38
|
+
accumulated.push(buildSQLWhere(whereField, alias));
|
|
39
|
+
}
|
|
40
|
+
return op(...accumulated);
|
|
41
|
+
}
|
|
42
|
+
} else {
|
|
43
|
+
const payloadOperator = Object.keys(where[k])[0];
|
|
44
|
+
const value = where[k][payloadOperator];
|
|
45
|
+
return operatorMap[payloadOperator](sql.raw(`"${alias}"."${k.split('.').join('_')}"`), value);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs, currentTableName, depth, fields, joinQuery = {}, joins, locale, parentIsLocalized = false, path, select, selectAllOnCurrentLevel = false, selectMode, tablePath, topLevelArgs, topLevelTableName, versions, withTabledFields })=>{
|
|
11
50
|
fields.forEach((field)=>{
|
|
12
51
|
if (fieldIsVirtual(field)) {
|
|
13
52
|
return;
|
|
14
53
|
}
|
|
54
|
+
const isFieldLocalized = fieldShouldBeLocalized({
|
|
55
|
+
field,
|
|
56
|
+
parentIsLocalized
|
|
57
|
+
});
|
|
15
58
|
// handle simple relationship
|
|
16
59
|
if (depth > 0 && (field.type === 'upload' || field.type === 'relationship') && !field.hasMany && typeof field.relationTo === 'string') {
|
|
17
|
-
if (
|
|
60
|
+
if (isFieldLocalized) {
|
|
18
61
|
_locales.with[`${path}${field.name}`] = true;
|
|
19
62
|
} else {
|
|
20
63
|
currentArgs.with[`${path}${field.name}`] = true;
|
|
@@ -72,13 +115,13 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
72
115
|
fields: field.flattenedFields,
|
|
73
116
|
joinQuery,
|
|
74
117
|
locale,
|
|
118
|
+
parentIsLocalized: parentIsLocalized || field.localized,
|
|
75
119
|
path: '',
|
|
76
120
|
select: typeof arraySelect === 'object' ? arraySelect : undefined,
|
|
77
121
|
selectMode,
|
|
78
122
|
tablePath: '',
|
|
79
123
|
topLevelArgs,
|
|
80
124
|
topLevelTableName,
|
|
81
|
-
withinLocalizedField: withinLocalizedField || field.localized,
|
|
82
125
|
withTabledFields
|
|
83
126
|
});
|
|
84
127
|
if (typeof arraySelect === 'object' && withArray.with._locales && Object.keys(withArray.with._locales).length === 1) {
|
|
@@ -156,13 +199,13 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
156
199
|
fields: block.flattenedFields,
|
|
157
200
|
joinQuery,
|
|
158
201
|
locale,
|
|
202
|
+
parentIsLocalized: parentIsLocalized || field.localized,
|
|
159
203
|
path: '',
|
|
160
204
|
select: typeof blockSelect === 'object' ? blockSelect : undefined,
|
|
161
205
|
selectMode: blockSelectMode,
|
|
162
206
|
tablePath: '',
|
|
163
207
|
topLevelArgs,
|
|
164
208
|
topLevelTableName,
|
|
165
|
-
withinLocalizedField: withinLocalizedField || field.localized,
|
|
166
209
|
withTabledFields
|
|
167
210
|
});
|
|
168
211
|
if (typeof blockSelect === 'object' && withBlock.with._locales && Object.keys(withBlock.with._locales.columns).length === 1) {
|
|
@@ -190,6 +233,7 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
190
233
|
joinQuery,
|
|
191
234
|
joins,
|
|
192
235
|
locale,
|
|
236
|
+
parentIsLocalized: parentIsLocalized || field.localized,
|
|
193
237
|
path: `${path}${field.name}_`,
|
|
194
238
|
select: typeof fieldSelect === 'object' ? fieldSelect : undefined,
|
|
195
239
|
selectAllOnCurrentLevel: selectAllOnCurrentLevel || fieldSelect === true || selectMode === 'exclude' && typeof fieldSelect === 'undefined',
|
|
@@ -198,7 +242,6 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
198
242
|
topLevelArgs,
|
|
199
243
|
topLevelTableName,
|
|
200
244
|
versions,
|
|
201
|
-
withinLocalizedField: withinLocalizedField || field.localized,
|
|
202
245
|
withTabledFields
|
|
203
246
|
});
|
|
204
247
|
break;
|
|
@@ -216,97 +259,181 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
216
259
|
if (joinQuery[joinSchemaPath] === false) {
|
|
217
260
|
break;
|
|
218
261
|
}
|
|
219
|
-
const { limit: limitArg = field.defaultLimit ?? 10, sort = field.defaultSort, where } = joinQuery[joinSchemaPath] || {};
|
|
262
|
+
const { limit: limitArg = field.defaultLimit ?? 10, page, sort = field.defaultSort, where } = joinQuery[joinSchemaPath] || {};
|
|
220
263
|
let limit = limitArg;
|
|
221
264
|
if (limit !== 0) {
|
|
222
265
|
// get an additional document and slice it later to determine if there is a next page
|
|
223
266
|
limit += 1;
|
|
224
267
|
}
|
|
225
|
-
const
|
|
226
|
-
const
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
268
|
+
const columnName = `${path.replaceAll('.', '_')}${field.name}`;
|
|
269
|
+
const db = adapter.drizzle;
|
|
270
|
+
if (Array.isArray(field.collection)) {
|
|
271
|
+
let currentQuery = null;
|
|
272
|
+
const onPath = field.on.split('.').join('_');
|
|
273
|
+
if (Array.isArray(sort)) {
|
|
274
|
+
throw new Error('Not implemented');
|
|
275
|
+
}
|
|
276
|
+
let sanitizedSort = sort;
|
|
277
|
+
if (!sanitizedSort) {
|
|
278
|
+
if (field.collection.some((collection)=>adapter.payload.collections[collection].config.fields.some((f)=>f.type === 'date' && f.name === 'createdAt'))) {
|
|
279
|
+
sanitizedSort = '-createdAt';
|
|
280
|
+
} else {
|
|
281
|
+
sanitizedSort = 'id';
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
const sortOrder = sanitizedSort.startsWith('-') ? desc : asc;
|
|
285
|
+
sanitizedSort = sanitizedSort.replace('-', '');
|
|
286
|
+
const sortPath = sanitizedSort.split('.').join('_');
|
|
287
|
+
const wherePaths = [];
|
|
288
|
+
if (where) {
|
|
289
|
+
flattenAllWherePaths(where, wherePaths);
|
|
290
|
+
}
|
|
291
|
+
for (const collection of field.collection){
|
|
292
|
+
const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(collection));
|
|
293
|
+
const table = adapter.tables[joinCollectionTableName];
|
|
294
|
+
const sortColumn = table[sortPath];
|
|
295
|
+
const selectFields = {
|
|
296
|
+
id: adapter.tables[joinCollectionTableName].id,
|
|
297
|
+
parent: sql`${adapter.tables[joinCollectionTableName][onPath]}`.as(onPath),
|
|
298
|
+
relationTo: sql`${collection}`.as('relationTo'),
|
|
299
|
+
sortPath: sql`${sortColumn ? sortColumn : null}`.as('sortPath')
|
|
300
|
+
};
|
|
301
|
+
// Select for WHERE and Fallback NULL
|
|
302
|
+
for (const path of wherePaths){
|
|
303
|
+
if (adapter.tables[joinCollectionTableName][path]) {
|
|
304
|
+
selectFields[path] = sql`${adapter.tables[joinCollectionTableName][path]}`.as(path);
|
|
305
|
+
// Allow to filter by collectionSlug
|
|
306
|
+
} else if (path !== 'relationTo') {
|
|
307
|
+
selectFields[path] = sql`null`.as(path);
|
|
236
308
|
}
|
|
237
309
|
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
310
|
+
const query = db.select(selectFields).from(adapter.tables[joinCollectionTableName]);
|
|
311
|
+
if (currentQuery === null) {
|
|
312
|
+
currentQuery = query;
|
|
313
|
+
} else {
|
|
314
|
+
currentQuery = currentQuery.unionAll(query);
|
|
243
315
|
}
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
and
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
316
|
+
}
|
|
317
|
+
const subQueryAlias = `${columnName}_subquery`;
|
|
318
|
+
let sqlWhere = eq(adapter.tables[currentTableName].id, sql.raw(`"${subQueryAlias}"."${onPath}"`));
|
|
319
|
+
if (where && Object.keys(where).length > 0) {
|
|
320
|
+
sqlWhere = and(sqlWhere, buildSQLWhere(where, subQueryAlias));
|
|
321
|
+
}
|
|
322
|
+
currentQuery = currentQuery.orderBy(sortOrder(sql`"sortPath"`));
|
|
323
|
+
if (page && limit !== 0) {
|
|
324
|
+
const offset = (page - 1) * limit;
|
|
325
|
+
if (offset > 0) {
|
|
326
|
+
currentQuery = currentQuery.offset(offset);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
if (limit) {
|
|
330
|
+
currentQuery = currentQuery.limit(limit);
|
|
331
|
+
}
|
|
332
|
+
currentArgs.extras[columnName] = sql`${db.select({
|
|
333
|
+
id: jsonAggBuildObject(adapter, {
|
|
334
|
+
id: sql.raw(`"${subQueryAlias}"."id"`),
|
|
335
|
+
relationTo: sql.raw(`"${subQueryAlias}"."relationTo"`)
|
|
336
|
+
})
|
|
337
|
+
}).from(sql`${currentQuery.as(subQueryAlias)}`).where(sqlWhere)}`.as(columnName);
|
|
338
|
+
} else {
|
|
339
|
+
const fields = adapter.payload.collections[field.collection].config.flattenedFields;
|
|
340
|
+
const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(field.collection));
|
|
341
|
+
const joins = [];
|
|
342
|
+
const currentIDColumn = versions ? adapter.tables[currentTableName].parent : adapter.tables[currentTableName].id;
|
|
343
|
+
let joinQueryWhere;
|
|
344
|
+
if (Array.isArray(field.targetField.relationTo)) {
|
|
345
|
+
joinQueryWhere = {
|
|
346
|
+
[field.on]: {
|
|
347
|
+
equals: {
|
|
348
|
+
relationTo: collectionSlug,
|
|
349
|
+
value: rawConstraint(currentIDColumn)
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
};
|
|
353
|
+
} else {
|
|
354
|
+
joinQueryWhere = {
|
|
355
|
+
[field.on]: {
|
|
356
|
+
equals: rawConstraint(currentIDColumn)
|
|
357
|
+
}
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
if (where && Object.keys(where).length) {
|
|
361
|
+
joinQueryWhere = {
|
|
362
|
+
and: [
|
|
363
|
+
joinQueryWhere,
|
|
364
|
+
where
|
|
365
|
+
]
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
const columnName = `${path.replaceAll('.', '_')}${field.name}`;
|
|
369
|
+
const subQueryAlias = `${columnName}_alias`;
|
|
370
|
+
const { newAliasTable } = getTableAlias({
|
|
371
|
+
adapter,
|
|
372
|
+
tableName: joinCollectionTableName
|
|
279
373
|
});
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
374
|
+
const { orderBy, selectFields, where: subQueryWhere } = buildQuery({
|
|
375
|
+
adapter,
|
|
376
|
+
aliasTable: newAliasTable,
|
|
377
|
+
fields,
|
|
378
|
+
joins,
|
|
379
|
+
locale,
|
|
380
|
+
parentIsLocalized,
|
|
381
|
+
selectLocale: true,
|
|
382
|
+
sort,
|
|
383
|
+
tableName: joinCollectionTableName,
|
|
384
|
+
where: joinQueryWhere
|
|
287
385
|
});
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
386
|
+
const chainedMethods = [];
|
|
387
|
+
joins.forEach(({ type, condition, table })=>{
|
|
388
|
+
chainedMethods.push({
|
|
389
|
+
args: [
|
|
390
|
+
table,
|
|
391
|
+
condition
|
|
392
|
+
],
|
|
393
|
+
method: type ?? 'leftJoin'
|
|
394
|
+
});
|
|
395
|
+
});
|
|
396
|
+
if (page && limit !== 0) {
|
|
397
|
+
const offset = (page - 1) * limit - 1;
|
|
398
|
+
if (offset > 0) {
|
|
399
|
+
chainedMethods.push({
|
|
400
|
+
args: [
|
|
401
|
+
offset
|
|
402
|
+
],
|
|
403
|
+
method: 'offset'
|
|
404
|
+
});
|
|
405
|
+
}
|
|
296
406
|
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
407
|
+
if (limit !== 0) {
|
|
408
|
+
chainedMethods.push({
|
|
409
|
+
args: [
|
|
410
|
+
limit
|
|
411
|
+
],
|
|
412
|
+
method: 'limit'
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
const db = adapter.drizzle;
|
|
416
|
+
for(let key in selectFields){
|
|
417
|
+
const val = selectFields[key];
|
|
418
|
+
if (val.table && getNameFromDrizzleTable(val.table) === joinCollectionTableName) {
|
|
419
|
+
delete selectFields[key];
|
|
420
|
+
key = key.split('.').pop();
|
|
421
|
+
selectFields[key] = newAliasTable[key];
|
|
307
422
|
}
|
|
308
|
-
}
|
|
309
|
-
|
|
423
|
+
}
|
|
424
|
+
const subQuery = chainMethods({
|
|
425
|
+
methods: chainedMethods,
|
|
426
|
+
query: db.select(selectFields).from(newAliasTable).where(subQueryWhere).orderBy(()=>orderBy.map(({ column, order })=>order(column)))
|
|
427
|
+
}).as(subQueryAlias);
|
|
428
|
+
currentArgs.extras[columnName] = sql`${db.select({
|
|
429
|
+
result: jsonAggBuildObject(adapter, {
|
|
430
|
+
id: sql.raw(`"${subQueryAlias}".id`),
|
|
431
|
+
...selectFields._locale && {
|
|
432
|
+
locale: sql.raw(`"${subQueryAlias}".${selectFields._locale.name}`)
|
|
433
|
+
}
|
|
434
|
+
})
|
|
435
|
+
}).from(sql`${subQuery}`)}`.as(subQueryAlias);
|
|
436
|
+
}
|
|
310
437
|
break;
|
|
311
438
|
}
|
|
312
439
|
case 'point':
|
|
@@ -314,7 +441,7 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
314
441
|
if (adapter.name === 'sqlite') {
|
|
315
442
|
break;
|
|
316
443
|
}
|
|
317
|
-
const args =
|
|
444
|
+
const args = isFieldLocalized ? _locales : currentArgs;
|
|
318
445
|
if (!args.columns) {
|
|
319
446
|
args.columns = {};
|
|
320
447
|
}
|
|
@@ -361,7 +488,7 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
361
488
|
}
|
|
362
489
|
if (select || selectAllOnCurrentLevel) {
|
|
363
490
|
const fieldPath = `${path}${field.name}`;
|
|
364
|
-
if ((
|
|
491
|
+
if ((isFieldLocalized || parentIsLocalized) && _locales) {
|
|
365
492
|
_locales.columns[fieldPath] = true;
|
|
366
493
|
} else if (adapter.tables[currentTableName]?.[fieldPath]) {
|
|
367
494
|
currentArgs.columns[fieldPath] = true;
|
|
@@ -376,7 +503,7 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
|
|
|
376
503
|
}
|
|
377
504
|
if (selectAllOnCurrentLevel || selectMode === 'include' && select[field.name] === true || selectMode === 'exclude' && typeof select[field.name] === 'undefined') {
|
|
378
505
|
const fieldPath = `${path}${field.name}`;
|
|
379
|
-
if ((
|
|
506
|
+
if ((isFieldLocalized || parentIsLocalized) && _locales) {
|
|
380
507
|
_locales.columns[fieldPath] = true;
|
|
381
508
|
} else if (adapter.tables[currentTableName]?.[fieldPath]) {
|
|
382
509
|
currentArgs.columns[fieldPath] = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/find/traverseFields.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { FlattenedField, JoinQuery, SelectMode, SelectType, Where } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport { fieldIsVirtual } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, ChainedMethods, DrizzleAdapter } from '../types.js'\nimport type { Result } from './buildFindManyArgs.js'\n\nimport buildQuery from '../queries/buildQuery.js'\nimport { getTableAlias } from '../queries/getTableAlias.js'\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { jsonAggBuildObject } from '../utilities/json.js'\nimport { rawConstraint } from '../utilities/rawConstraint.js'\nimport { chainMethods } from './chainMethods.js'\n\ntype TraverseFieldArgs = {\n _locales: Result\n adapter: DrizzleAdapter\n collectionSlug?: string\n currentArgs: Result\n currentTableName: string\n depth?: number\n fields: FlattenedField[]\n joinQuery: JoinQuery\n joins?: BuildQueryJoinAliases\n locale?: string\n path: string\n select?: SelectType\n selectAllOnCurrentLevel?: boolean\n selectMode?: SelectMode\n tablePath: string\n topLevelArgs: Record<string, unknown>\n topLevelTableName: string\n versions?: boolean\n withinLocalizedField?: boolean\n withTabledFields: {\n numbers?: boolean\n rels?: boolean\n texts?: boolean\n }\n}\n\nexport const traverseFields = ({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n fields,\n joinQuery = {},\n joins,\n locale,\n path,\n select,\n selectAllOnCurrentLevel = false,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n versions,\n withinLocalizedField = false,\n withTabledFields,\n}: TraverseFieldArgs) => {\n fields.forEach((field) => {\n if (fieldIsVirtual(field)) {\n return\n }\n\n // handle simple relationship\n if (\n depth > 0 &&\n (field.type === 'upload' || field.type === 'relationship') &&\n !field.hasMany &&\n typeof field.relationTo === 'string'\n ) {\n if (field.localized) {\n _locales.with[`${path}${field.name}`] = true\n } else {\n currentArgs.with[`${path}${field.name}`] = true\n }\n }\n\n switch (field.type) {\n case 'array': {\n const arraySelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && typeof arraySelect === 'undefined') ||\n (selectMode === 'exclude' && arraySelect === false)\n ) {\n break\n }\n }\n\n const withArray: Result = {\n columns:\n typeof arraySelect === 'object'\n ? {\n id: true,\n _order: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const arrayTableName = adapter.tableNameMap.get(\n `${currentTableName}_${tablePath}${toSnakeCase(field.name)}`,\n )\n\n if (typeof arraySelect === 'object') {\n if (adapter.tables[arrayTableName]._locale) {\n withArray.columns._locale = true\n }\n\n if (adapter.tables[arrayTableName]._uuid) {\n withArray.columns._uuid = true\n }\n }\n\n const arrayTableNameWithLocales = `${arrayTableName}${adapter.localesSuffix}`\n\n if (adapter.tables[arrayTableNameWithLocales]) {\n withArray.with._locales = {\n columns:\n typeof arraySelect === 'object'\n ? {\n _locale: true,\n }\n : {\n id: false,\n _parentID: false,\n },\n with: {},\n }\n }\n\n currentArgs.with[`${path}${field.name}`] = withArray\n\n traverseFields({\n _locales: withArray.with._locales,\n adapter,\n currentArgs: withArray,\n currentTableName: arrayTableName,\n depth,\n fields: field.flattenedFields,\n joinQuery,\n locale,\n path: '',\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withinLocalizedField: withinLocalizedField || field.localized,\n withTabledFields,\n })\n\n if (\n typeof arraySelect === 'object' &&\n withArray.with._locales &&\n Object.keys(withArray.with._locales).length === 1\n ) {\n delete withArray.with._locales\n }\n\n break\n }\n\n case 'blocks': {\n const blocksSelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && !blocksSelect) ||\n (selectMode === 'exclude' && blocksSelect === false)\n ) {\n break\n }\n }\n\n ;(field.blockReferences ?? field.blocks).forEach((_block) => {\n const block = typeof _block === 'string' ? adapter.payload.blocks[_block] : _block\n const blockKey = `_blocks_${block.slug}`\n\n let blockSelect: boolean | SelectType | undefined\n\n let blockSelectMode = selectMode\n\n if (selectMode === 'include' && blocksSelect === true) {\n blockSelect = true\n }\n\n if (typeof blocksSelect === 'object') {\n if (typeof blocksSelect[block.slug] === 'object') {\n blockSelect = blocksSelect[block.slug]\n } else if (\n (selectMode === 'include' && typeof blocksSelect[block.slug] === 'undefined') ||\n (selectMode === 'exclude' && blocksSelect[block.slug] === false)\n ) {\n blockSelect = {}\n blockSelectMode = 'include'\n } else if (selectMode === 'include' && blocksSelect[block.slug] === true) {\n blockSelect = true\n }\n }\n\n if (!topLevelArgs[blockKey]) {\n const withBlock: Result = {\n columns:\n typeof blockSelect === 'object'\n ? {\n id: true,\n _order: true,\n _path: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const tableName = adapter.tableNameMap.get(\n `${topLevelTableName}_blocks_${toSnakeCase(block.slug)}`,\n )\n\n if (typeof blockSelect === 'object') {\n if (adapter.tables[tableName]._locale) {\n withBlock.columns._locale = true\n }\n\n if (adapter.tables[tableName]._uuid) {\n withBlock.columns._uuid = true\n }\n }\n\n if (adapter.tables[`${tableName}${adapter.localesSuffix}`]) {\n withBlock.with._locales = {\n with: {},\n }\n\n if (typeof blockSelect === 'object') {\n withBlock.with._locales.columns = {\n _locale: true,\n }\n }\n }\n topLevelArgs.with[blockKey] = withBlock\n\n traverseFields({\n _locales: withBlock.with._locales,\n adapter,\n currentArgs: withBlock,\n currentTableName: tableName,\n depth,\n fields: block.flattenedFields,\n joinQuery,\n locale,\n path: '',\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withinLocalizedField: withinLocalizedField || field.localized,\n withTabledFields,\n })\n\n if (\n typeof blockSelect === 'object' &&\n withBlock.with._locales &&\n Object.keys(withBlock.with._locales.columns).length === 1\n ) {\n delete withBlock.with._locales\n }\n }\n })\n\n break\n }\n\n case 'group':\n case 'tab': {\n const fieldSelect = select?.[field.name]\n\n if (fieldSelect === false) {\n break\n }\n\n traverseFields({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n fields: field.flattenedFields,\n joinQuery,\n joins,\n locale,\n path: `${path}${field.name}_`,\n select: typeof fieldSelect === 'object' ? fieldSelect : undefined,\n selectAllOnCurrentLevel:\n selectAllOnCurrentLevel ||\n fieldSelect === true ||\n (selectMode === 'exclude' && typeof fieldSelect === 'undefined'),\n selectMode,\n tablePath: `${tablePath}${toSnakeCase(field.name)}_`,\n topLevelArgs,\n topLevelTableName,\n versions,\n withinLocalizedField: withinLocalizedField || field.localized,\n withTabledFields,\n })\n\n break\n }\n case 'join': {\n // when `joinsQuery` is false, do not join\n if (joinQuery === false) {\n break\n }\n\n if (\n (select && selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n\n const joinSchemaPath = `${path.replaceAll('_', '.')}${field.name}`\n\n if (joinQuery[joinSchemaPath] === false) {\n break\n }\n\n const {\n limit: limitArg = field.defaultLimit ?? 10,\n sort = field.defaultSort,\n where,\n } = joinQuery[joinSchemaPath] || {}\n let limit = limitArg\n\n if (limit !== 0) {\n // get an additional document and slice it later to determine if there is a next page\n limit += 1\n }\n\n const fields = adapter.payload.collections[field.collection].config.flattenedFields\n\n const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(field.collection))\n\n const joins: BuildQueryJoinAliases = []\n\n const currentIDColumn = versions\n ? adapter.tables[currentTableName].parent\n : adapter.tables[currentTableName].id\n\n let joinQueryWhere: Where\n\n if (Array.isArray(field.targetField.relationTo)) {\n joinQueryWhere = {\n [field.on]: {\n equals: {\n relationTo: collectionSlug,\n value: rawConstraint(currentIDColumn),\n },\n },\n }\n } else {\n joinQueryWhere = {\n [field.on]: {\n equals: rawConstraint(currentIDColumn),\n },\n }\n }\n\n if (where && Object.keys(where).length) {\n joinQueryWhere = {\n and: [joinQueryWhere, where],\n }\n }\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const subQueryAlias = `${columnName}_alias`\n\n const { newAliasTable } = getTableAlias({\n adapter,\n tableName: joinCollectionTableName,\n })\n\n const {\n orderBy,\n selectFields,\n where: subQueryWhere,\n } = buildQuery({\n adapter,\n aliasTable: newAliasTable,\n fields,\n joins,\n locale,\n selectLocale: true,\n sort,\n tableName: joinCollectionTableName,\n where: joinQueryWhere,\n })\n\n const chainedMethods: ChainedMethods = []\n\n joins.forEach(({ type, condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: type ?? 'leftJoin',\n })\n })\n\n if (limit !== 0) {\n chainedMethods.push({\n args: [limit],\n method: 'limit',\n })\n }\n\n const db = adapter.drizzle as LibSQLDatabase\n\n for (let key in selectFields) {\n const val = selectFields[key]\n\n if (val.table && getNameFromDrizzleTable(val.table) === joinCollectionTableName) {\n delete selectFields[key]\n key = key.split('.').pop()\n selectFields[key] = newAliasTable[key]\n }\n }\n\n const subQuery = chainMethods({\n methods: chainedMethods,\n query: db\n .select(selectFields as any)\n .from(newAliasTable)\n .where(subQueryWhere)\n .orderBy(() => orderBy.map(({ column, order }) => order(column))),\n }).as(subQueryAlias)\n\n currentArgs.extras[columnName] = sql`${db\n .select({\n result: jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".id`),\n ...(selectFields._locale && {\n locale: sql.raw(`\"${subQueryAlias}\".${selectFields._locale.name}`),\n }),\n }),\n })\n .from(sql`${subQuery}`)}`.as(subQueryAlias)\n\n break\n }\n\n case 'point': {\n if (adapter.name === 'sqlite') {\n break\n }\n\n const args = field.localized ? _locales : currentArgs\n if (!args.columns) {\n args.columns = {}\n }\n\n if (!args.extras) {\n args.extras = {}\n }\n\n const name = `${path}${field.name}`\n\n // Drizzle handles that poorly. See https://github.com/drizzle-team/drizzle-orm/issues/2526\n // Additionally, this way we format the column value straight in the database using ST_AsGeoJSON\n args.columns[name] = false\n\n let shouldSelect = false\n\n if (select || selectAllOnCurrentLevel) {\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && select[field.name] === true) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n shouldSelect = true\n }\n } else {\n shouldSelect = true\n }\n\n if (shouldSelect) {\n args.extras[name] = sql.raw(`ST_AsGeoJSON(${toSnakeCase(name)})::jsonb`).as(name)\n }\n break\n }\n\n case 'select': {\n if (select && !selectAllOnCurrentLevel) {\n if (\n (selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n }\n\n if (field.hasMany) {\n const withSelect: Result = {\n columns: {\n id: false,\n order: false,\n parent: false,\n },\n orderBy: ({ order }, { asc }) => [asc(order)],\n }\n\n currentArgs.with[`${path}${field.name}`] = withSelect\n break\n }\n\n if (select || selectAllOnCurrentLevel) {\n const fieldPath = `${path}${field.name}`\n\n if ((field.localized || withinLocalizedField) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n }\n\n break\n }\n\n default: {\n if (!select && !selectAllOnCurrentLevel) {\n break\n }\n\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && select[field.name] === true) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n const fieldPath = `${path}${field.name}`\n\n if ((field.localized || withinLocalizedField) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n\n if (\n !withTabledFields.rels &&\n (field.type === 'relationship' || field.type === 'upload') &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (!withTabledFields.numbers && field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (!withTabledFields.texts && field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n break\n }\n }\n })\n\n return topLevelArgs\n}\n"],"names":["sql","fieldIsVirtual","toSnakeCase","buildQuery","getTableAlias","getNameFromDrizzleTable","jsonAggBuildObject","rawConstraint","chainMethods","traverseFields","_locales","adapter","collectionSlug","currentArgs","currentTableName","depth","fields","joinQuery","joins","locale","path","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withinLocalizedField","withTabledFields","forEach","field","type","hasMany","relationTo","localized","with","name","arraySelect","withArray","columns","id","_order","_parentID","orderBy","asc","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","flattenedFields","undefined","Object","keys","length","blocksSelect","blockReferences","blocks","_block","block","payload","blockKey","slug","blockSelect","blockSelectMode","withBlock","_path","tableName","fieldSelect","joinSchemaPath","replaceAll","limit","limitArg","defaultLimit","sort","defaultSort","where","collections","collection","config","joinCollectionTableName","currentIDColumn","parent","joinQueryWhere","Array","isArray","targetField","on","equals","value","and","columnName","subQueryAlias","newAliasTable","selectFields","subQueryWhere","aliasTable","selectLocale","chainedMethods","condition","table","push","args","method","db","drizzle","key","val","split","pop","subQuery","methods","query","from","map","column","order","as","extras","result","raw","shouldSelect","withSelect","fieldPath","rels","numbers","texts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/find/traverseFields.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { SQLiteSelectBase } from 'drizzle-orm/sqlite-core'\nimport type { FlattenedField, JoinQuery, SelectMode, SelectType, Where } from 'payload'\n\nimport { and, asc, desc, eq, or, sql } from 'drizzle-orm'\nimport { fieldIsVirtual, fieldShouldBeLocalized } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, ChainedMethods, DrizzleAdapter } from '../types.js'\nimport type { Result } from './buildFindManyArgs.js'\n\nimport buildQuery from '../queries/buildQuery.js'\nimport { getTableAlias } from '../queries/getTableAlias.js'\nimport { operatorMap } from '../queries/operatorMap.js'\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { jsonAggBuildObject } from '../utilities/json.js'\nimport { rawConstraint } from '../utilities/rawConstraint.js'\nimport { chainMethods } from './chainMethods.js'\n\nconst flattenAllWherePaths = (where: Where, paths: string[]) => {\n for (const k in where) {\n if (['AND', 'OR'].includes(k.toUpperCase())) {\n if (Array.isArray(where[k])) {\n for (const whereField of where[k]) {\n flattenAllWherePaths(whereField, paths)\n }\n }\n } else {\n // TODO: explore how to support arrays/relationship querying.\n paths.push(k.split('.').join('_'))\n }\n }\n}\n\nconst buildSQLWhere = (where: Where, alias: string) => {\n for (const k in where) {\n if (['AND', 'OR'].includes(k.toUpperCase())) {\n if (Array.isArray(where[k])) {\n const op = 'AND' === k.toUpperCase() ? and : or\n const accumulated = []\n for (const whereField of where[k]) {\n accumulated.push(buildSQLWhere(whereField, alias))\n }\n return op(...accumulated)\n }\n } else {\n const payloadOperator = Object.keys(where[k])[0]\n const value = where[k][payloadOperator]\n\n return operatorMap[payloadOperator](sql.raw(`\"${alias}\".\"${k.split('.').join('_')}\"`), value)\n }\n }\n}\n\ntype SQLSelect = SQLiteSelectBase<any, any, any, any>\n\ntype TraverseFieldArgs = {\n _locales: Result\n adapter: DrizzleAdapter\n collectionSlug?: string\n currentArgs: Result\n currentTableName: string\n depth?: number\n fields: FlattenedField[]\n joinQuery: JoinQuery\n joins?: BuildQueryJoinAliases\n locale?: string\n parentIsLocalized?: boolean\n path: string\n select?: SelectType\n selectAllOnCurrentLevel?: boolean\n selectMode?: SelectMode\n tablePath: string\n topLevelArgs: Record<string, unknown>\n topLevelTableName: string\n versions?: boolean\n withTabledFields: {\n numbers?: boolean\n rels?: boolean\n texts?: boolean\n }\n}\n\nexport const traverseFields = ({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n fields,\n joinQuery = {},\n joins,\n locale,\n parentIsLocalized = false,\n path,\n select,\n selectAllOnCurrentLevel = false,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n}: TraverseFieldArgs) => {\n fields.forEach((field) => {\n if (fieldIsVirtual(field)) {\n return\n }\n\n const isFieldLocalized = fieldShouldBeLocalized({\n field,\n parentIsLocalized,\n })\n\n // handle simple relationship\n if (\n depth > 0 &&\n (field.type === 'upload' || field.type === 'relationship') &&\n !field.hasMany &&\n typeof field.relationTo === 'string'\n ) {\n if (isFieldLocalized) {\n _locales.with[`${path}${field.name}`] = true\n } else {\n currentArgs.with[`${path}${field.name}`] = true\n }\n }\n\n switch (field.type) {\n case 'array': {\n const arraySelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && typeof arraySelect === 'undefined') ||\n (selectMode === 'exclude' && arraySelect === false)\n ) {\n break\n }\n }\n\n const withArray: Result = {\n columns:\n typeof arraySelect === 'object'\n ? {\n id: true,\n _order: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const arrayTableName = adapter.tableNameMap.get(\n `${currentTableName}_${tablePath}${toSnakeCase(field.name)}`,\n )\n\n if (typeof arraySelect === 'object') {\n if (adapter.tables[arrayTableName]._locale) {\n withArray.columns._locale = true\n }\n\n if (adapter.tables[arrayTableName]._uuid) {\n withArray.columns._uuid = true\n }\n }\n\n const arrayTableNameWithLocales = `${arrayTableName}${adapter.localesSuffix}`\n\n if (adapter.tables[arrayTableNameWithLocales]) {\n withArray.with._locales = {\n columns:\n typeof arraySelect === 'object'\n ? {\n _locale: true,\n }\n : {\n id: false,\n _parentID: false,\n },\n with: {},\n }\n }\n\n currentArgs.with[`${path}${field.name}`] = withArray\n\n traverseFields({\n _locales: withArray.with._locales,\n adapter,\n currentArgs: withArray,\n currentTableName: arrayTableName,\n depth,\n fields: field.flattenedFields,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof arraySelect === 'object' &&\n withArray.with._locales &&\n Object.keys(withArray.with._locales).length === 1\n ) {\n delete withArray.with._locales\n }\n\n break\n }\n\n case 'blocks': {\n const blocksSelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && !blocksSelect) ||\n (selectMode === 'exclude' && blocksSelect === false)\n ) {\n break\n }\n }\n\n ;(field.blockReferences ?? field.blocks).forEach((_block) => {\n const block = typeof _block === 'string' ? adapter.payload.blocks[_block] : _block\n const blockKey = `_blocks_${block.slug}`\n\n let blockSelect: boolean | SelectType | undefined\n\n let blockSelectMode = selectMode\n\n if (selectMode === 'include' && blocksSelect === true) {\n blockSelect = true\n }\n\n if (typeof blocksSelect === 'object') {\n if (typeof blocksSelect[block.slug] === 'object') {\n blockSelect = blocksSelect[block.slug]\n } else if (\n (selectMode === 'include' && typeof blocksSelect[block.slug] === 'undefined') ||\n (selectMode === 'exclude' && blocksSelect[block.slug] === false)\n ) {\n blockSelect = {}\n blockSelectMode = 'include'\n } else if (selectMode === 'include' && blocksSelect[block.slug] === true) {\n blockSelect = true\n }\n }\n\n if (!topLevelArgs[blockKey]) {\n const withBlock: Result = {\n columns:\n typeof blockSelect === 'object'\n ? {\n id: true,\n _order: true,\n _path: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const tableName = adapter.tableNameMap.get(\n `${topLevelTableName}_blocks_${toSnakeCase(block.slug)}`,\n )\n\n if (typeof blockSelect === 'object') {\n if (adapter.tables[tableName]._locale) {\n withBlock.columns._locale = true\n }\n\n if (adapter.tables[tableName]._uuid) {\n withBlock.columns._uuid = true\n }\n }\n\n if (adapter.tables[`${tableName}${adapter.localesSuffix}`]) {\n withBlock.with._locales = {\n with: {},\n }\n\n if (typeof blockSelect === 'object') {\n withBlock.with._locales.columns = {\n _locale: true,\n }\n }\n }\n topLevelArgs.with[blockKey] = withBlock\n\n traverseFields({\n _locales: withBlock.with._locales,\n adapter,\n currentArgs: withBlock,\n currentTableName: tableName,\n depth,\n fields: block.flattenedFields,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof blockSelect === 'object' &&\n withBlock.with._locales &&\n Object.keys(withBlock.with._locales.columns).length === 1\n ) {\n delete withBlock.with._locales\n }\n }\n })\n\n break\n }\n\n case 'group':\n case 'tab': {\n const fieldSelect = select?.[field.name]\n\n if (fieldSelect === false) {\n break\n }\n\n traverseFields({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n fields: field.flattenedFields,\n joinQuery,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${path}${field.name}_`,\n select: typeof fieldSelect === 'object' ? fieldSelect : undefined,\n selectAllOnCurrentLevel:\n selectAllOnCurrentLevel ||\n fieldSelect === true ||\n (selectMode === 'exclude' && typeof fieldSelect === 'undefined'),\n selectMode,\n tablePath: `${tablePath}${toSnakeCase(field.name)}_`,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n })\n\n break\n }\n case 'join': {\n // when `joinsQuery` is false, do not join\n if (joinQuery === false) {\n break\n }\n\n if (\n (select && selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n\n const joinSchemaPath = `${path.replaceAll('_', '.')}${field.name}`\n\n if (joinQuery[joinSchemaPath] === false) {\n break\n }\n\n const {\n limit: limitArg = field.defaultLimit ?? 10,\n page,\n sort = field.defaultSort,\n where,\n } = joinQuery[joinSchemaPath] || {}\n let limit = limitArg\n\n if (limit !== 0) {\n // get an additional document and slice it later to determine if there is a next page\n limit += 1\n }\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const db = adapter.drizzle as LibSQLDatabase\n\n if (Array.isArray(field.collection)) {\n let currentQuery: null | SQLSelect = null\n const onPath = field.on.split('.').join('_')\n\n if (Array.isArray(sort)) {\n throw new Error('Not implemented')\n }\n\n let sanitizedSort = sort\n\n if (!sanitizedSort) {\n if (\n field.collection.some((collection) =>\n adapter.payload.collections[collection].config.fields.some(\n (f) => f.type === 'date' && f.name === 'createdAt',\n ),\n )\n ) {\n sanitizedSort = '-createdAt'\n } else {\n sanitizedSort = 'id'\n }\n }\n\n const sortOrder = sanitizedSort.startsWith('-') ? desc : asc\n sanitizedSort = sanitizedSort.replace('-', '')\n\n const sortPath = sanitizedSort.split('.').join('_')\n\n const wherePaths: string[] = []\n\n if (where) {\n flattenAllWherePaths(where, wherePaths)\n }\n\n for (const collection of field.collection) {\n const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(collection))\n\n const table = adapter.tables[joinCollectionTableName]\n\n const sortColumn = table[sortPath]\n\n const selectFields = {\n id: adapter.tables[joinCollectionTableName].id,\n parent: sql`${adapter.tables[joinCollectionTableName][onPath]}`.as(onPath),\n relationTo: sql`${collection}`.as('relationTo'),\n sortPath: sql`${sortColumn ? sortColumn : null}`.as('sortPath'),\n }\n\n // Select for WHERE and Fallback NULL\n for (const path of wherePaths) {\n if (adapter.tables[joinCollectionTableName][path]) {\n selectFields[path] = sql`${adapter.tables[joinCollectionTableName][path]}`.as(path)\n // Allow to filter by collectionSlug\n } else if (path !== 'relationTo') {\n selectFields[path] = sql`null`.as(path)\n }\n }\n\n const query = db.select(selectFields).from(adapter.tables[joinCollectionTableName])\n if (currentQuery === null) {\n currentQuery = query as unknown as SQLSelect\n } else {\n currentQuery = currentQuery.unionAll(query) as SQLSelect\n }\n }\n\n const subQueryAlias = `${columnName}_subquery`\n\n let sqlWhere = eq(\n adapter.tables[currentTableName].id,\n sql.raw(`\"${subQueryAlias}\".\"${onPath}\"`),\n )\n\n if (where && Object.keys(where).length > 0) {\n sqlWhere = and(sqlWhere, buildSQLWhere(where, subQueryAlias))\n }\n\n currentQuery = currentQuery.orderBy(sortOrder(sql`\"sortPath\"`)) as SQLSelect\n\n if (page && limit !== 0) {\n const offset = (page - 1) * limit\n if (offset > 0) {\n currentQuery = currentQuery.offset(offset) as SQLSelect\n }\n }\n\n if (limit) {\n currentQuery = currentQuery.limit(limit) as SQLSelect\n }\n\n currentArgs.extras[columnName] = sql`${db\n .select({\n id: jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".\"id\"`),\n relationTo: sql.raw(`\"${subQueryAlias}\".\"relationTo\"`),\n }),\n })\n .from(sql`${currentQuery.as(subQueryAlias)}`)\n .where(sqlWhere)}`.as(columnName)\n } else {\n const fields = adapter.payload.collections[field.collection].config.flattenedFields\n\n const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(field.collection))\n\n const joins: BuildQueryJoinAliases = []\n\n const currentIDColumn = versions\n ? adapter.tables[currentTableName].parent\n : adapter.tables[currentTableName].id\n\n let joinQueryWhere: Where\n\n if (Array.isArray(field.targetField.relationTo)) {\n joinQueryWhere = {\n [field.on]: {\n equals: {\n relationTo: collectionSlug,\n value: rawConstraint(currentIDColumn),\n },\n },\n }\n } else {\n joinQueryWhere = {\n [field.on]: {\n equals: rawConstraint(currentIDColumn),\n },\n }\n }\n\n if (where && Object.keys(where).length) {\n joinQueryWhere = {\n and: [joinQueryWhere, where],\n }\n }\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const subQueryAlias = `${columnName}_alias`\n\n const { newAliasTable } = getTableAlias({\n adapter,\n tableName: joinCollectionTableName,\n })\n\n const {\n orderBy,\n selectFields,\n where: subQueryWhere,\n } = buildQuery({\n adapter,\n aliasTable: newAliasTable,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectLocale: true,\n sort,\n tableName: joinCollectionTableName,\n where: joinQueryWhere,\n })\n\n const chainedMethods: ChainedMethods = []\n\n joins.forEach(({ type, condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: type ?? 'leftJoin',\n })\n })\n\n if (page && limit !== 0) {\n const offset = (page - 1) * limit - 1\n if (offset > 0) {\n chainedMethods.push({\n args: [offset],\n method: 'offset',\n })\n }\n }\n\n if (limit !== 0) {\n chainedMethods.push({\n args: [limit],\n method: 'limit',\n })\n }\n\n const db = adapter.drizzle as LibSQLDatabase\n\n for (let key in selectFields) {\n const val = selectFields[key]\n\n if (val.table && getNameFromDrizzleTable(val.table) === joinCollectionTableName) {\n delete selectFields[key]\n key = key.split('.').pop()\n selectFields[key] = newAliasTable[key]\n }\n }\n\n const subQuery = chainMethods({\n methods: chainedMethods,\n query: db\n .select(selectFields as any)\n .from(newAliasTable)\n .where(subQueryWhere)\n .orderBy(() => orderBy.map(({ column, order }) => order(column))),\n }).as(subQueryAlias)\n\n currentArgs.extras[columnName] = sql`${db\n .select({\n result: jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".id`),\n ...(selectFields._locale && {\n locale: sql.raw(`\"${subQueryAlias}\".${selectFields._locale.name}`),\n }),\n }),\n })\n .from(sql`${subQuery}`)}`.as(subQueryAlias)\n }\n\n break\n }\n\n case 'point': {\n if (adapter.name === 'sqlite') {\n break\n }\n\n const args = isFieldLocalized ? _locales : currentArgs\n if (!args.columns) {\n args.columns = {}\n }\n\n if (!args.extras) {\n args.extras = {}\n }\n\n const name = `${path}${field.name}`\n\n // Drizzle handles that poorly. See https://github.com/drizzle-team/drizzle-orm/issues/2526\n // Additionally, this way we format the column value straight in the database using ST_AsGeoJSON\n args.columns[name] = false\n\n let shouldSelect = false\n\n if (select || selectAllOnCurrentLevel) {\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && select[field.name] === true) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n shouldSelect = true\n }\n } else {\n shouldSelect = true\n }\n\n if (shouldSelect) {\n args.extras[name] = sql.raw(`ST_AsGeoJSON(${toSnakeCase(name)})::jsonb`).as(name)\n }\n break\n }\n\n case 'select': {\n if (select && !selectAllOnCurrentLevel) {\n if (\n (selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n }\n\n if (field.hasMany) {\n const withSelect: Result = {\n columns: {\n id: false,\n order: false,\n parent: false,\n },\n orderBy: ({ order }, { asc }) => [asc(order)],\n }\n\n currentArgs.with[`${path}${field.name}`] = withSelect\n break\n }\n\n if (select || selectAllOnCurrentLevel) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n }\n\n break\n }\n\n default: {\n if (!select && !selectAllOnCurrentLevel) {\n break\n }\n\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && select[field.name] === true) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n\n if (\n !withTabledFields.rels &&\n (field.type === 'relationship' || field.type === 'upload') &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (!withTabledFields.numbers && field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (!withTabledFields.texts && field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n break\n }\n }\n })\n\n return topLevelArgs\n}\n"],"names":["and","asc","desc","eq","or","sql","fieldIsVirtual","fieldShouldBeLocalized","toSnakeCase","buildQuery","getTableAlias","operatorMap","getNameFromDrizzleTable","jsonAggBuildObject","rawConstraint","chainMethods","flattenAllWherePaths","where","paths","k","includes","toUpperCase","Array","isArray","whereField","push","split","join","buildSQLWhere","alias","op","accumulated","payloadOperator","Object","keys","value","raw","traverseFields","_locales","adapter","collectionSlug","currentArgs","currentTableName","depth","fields","joinQuery","joins","locale","parentIsLocalized","path","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withTabledFields","forEach","field","isFieldLocalized","type","hasMany","relationTo","with","name","arraySelect","withArray","columns","id","_order","_parentID","orderBy","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","flattenedFields","localized","undefined","length","blocksSelect","blockReferences","blocks","_block","block","payload","blockKey","slug","blockSelect","blockSelectMode","withBlock","_path","tableName","fieldSelect","joinSchemaPath","replaceAll","limit","limitArg","defaultLimit","page","sort","defaultSort","columnName","db","drizzle","collection","currentQuery","onPath","on","Error","sanitizedSort","some","collections","config","f","sortOrder","startsWith","replace","sortPath","wherePaths","joinCollectionTableName","table","sortColumn","selectFields","parent","as","query","from","unionAll","subQueryAlias","sqlWhere","offset","extras","currentIDColumn","joinQueryWhere","targetField","equals","newAliasTable","subQueryWhere","aliasTable","selectLocale","chainedMethods","condition","args","method","key","val","pop","subQuery","methods","map","column","order","result","shouldSelect","withSelect","fieldPath","rels","numbers","texts"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"countDistinct.d.ts","sourceRoot":"","sources":["../../src/postgres/countDistinct.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAuB,aAAa,EAAE,MAAM,YAAY,CAAA;AAIpE,eAAO,MAAM,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"countDistinct.d.ts","sourceRoot":"","sources":["../../src/postgres/countDistinct.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAuB,aAAa,EAAE,MAAM,YAAY,CAAA;AAIpE,eAAO,MAAM,aAAa,EAAE,aAyC3B,CAAA"}
|