nestjs-paginate 12.11.0 → 13.0.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/README.md CHANGED
@@ -516,6 +516,48 @@ const config: PaginateConfig<CatEntity> = {
516
516
  const result = await paginate<CatEntity>(query, catRepo, config)
517
517
  ```
518
518
 
519
+ ## Usage with to-many relationships
520
+
521
+ You can filter parents by conditions on their to-many relations (one-to-many or many-to-many) using quantifiers.
522
+ Quantifiers define how many related rows must satisfy the condition:
523
+
524
+ - `$any` (default): at least one related row matches the condition
525
+ - `$all`: all related rows match the condition
526
+ - `$none`: no related rows match the condition
527
+
528
+ ### Examples
529
+ Assume `CatEntity` has a one‑to‑many relation `toys: CatToyEntity[]` where `CatToyEntity` has a string column `name`.
530
+
531
+ - At least one toy named exactly "Ball":
532
+
533
+ ```url
534
+ GET /cats?filter.toys.name=$any:$eq:Ball
535
+ ```
536
+
537
+ - At least one toy whose name contains "red" (case-insensitive):
538
+
539
+ ```url
540
+ GET /cats?filter.toys.name=$any:$ilike:red
541
+ ```
542
+
543
+ - All toys must have names that start with "Chew":
544
+
545
+ ```url
546
+ GET /cats?filter.toys.name=$all:$sw:Chew
547
+ ```
548
+
549
+ - No toys named "Squeaky", including cats without any toys:
550
+
551
+ ```url
552
+ GET /cats?filter.toys.name=$none:$eq:Squeaky
553
+ ```
554
+
555
+ - One or more toys not named "Squeaky":
556
+
557
+ ```url
558
+ GET /cats?filter.toys.name=$any:$not:$eq:Squeaky
559
+ ```
560
+
519
561
  ## Usage with Eager Loading
520
562
 
521
563
  Eager loading should work with TypeORM's eager property out of the box:
@@ -6,4 +6,5 @@ export declare class CatHomePillowEntity {
6
6
  color: string;
7
7
  brand: CatHomePillowBrandEntity;
8
8
  createdAt: string;
9
+ deletedAt: string;
9
10
  }
@@ -37,6 +37,10 @@ __decorate([
37
37
  (0, typeorm_1.CreateDateColumn)(column_option_1.DateColumnNotNull),
38
38
  __metadata("design:type", String)
39
39
  ], CatHomePillowEntity.prototype, "createdAt", void 0);
40
+ __decorate([
41
+ (0, typeorm_1.DeleteDateColumn)(column_option_1.DateColumnNotNull),
42
+ __metadata("design:type", String)
43
+ ], CatHomePillowEntity.prototype, "deletedAt", void 0);
40
44
  exports.CatHomePillowEntity = CatHomePillowEntity = __decorate([
41
45
  (0, typeorm_1.Entity)()
42
46
  ], CatHomePillowEntity);
@@ -1 +1 @@
1
- {"version":3,"file":"cat-home-pillow.entity.js","sourceRoot":"","sources":["../../src/__tests__/cat-home-pillow.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA6F;AAC7F,iFAAyE;AACzE,uDAAiD;AACjD,mDAAmD;AAG5C,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;CAe/B,CAAA;AAfY,kDAAmB;AAE5B;IADC,IAAA,gCAAsB,GAAE;;+CACf;AAGV;IADC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,+BAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;8BACjD,+BAAa;iDAAA;AAGnB;IADC,IAAA,gBAAM,GAAE;;kDACI;AAGb;IADC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,uDAAwB,CAAC;8BACnC,uDAAwB;kDAAA;AAG/B;IADC,IAAA,0BAAgB,EAAC,iCAAiB,CAAC;;sDACnB;8BAdR,mBAAmB;IAD/B,IAAA,gBAAM,GAAE;GACI,mBAAmB,CAe/B"}
1
+ {"version":3,"file":"cat-home-pillow.entity.js","sourceRoot":"","sources":["../../src/__tests__/cat-home-pillow.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA+G;AAC/G,iFAAyE;AACzE,uDAAiD;AACjD,mDAAmD;AAG5C,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;CAkB/B,CAAA;AAlBY,kDAAmB;AAE5B;IADC,IAAA,gCAAsB,GAAE;;+CACf;AAGV;IADC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,+BAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;8BACjD,+BAAa;iDAAA;AAGnB;IADC,IAAA,gBAAM,GAAE;;kDACI;AAGb;IADC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,uDAAwB,CAAC;8BACnC,uDAAwB;kDAAA;AAG/B;IADC,IAAA,0BAAgB,EAAC,iCAAiB,CAAC;;sDACnB;AAGjB;IADC,IAAA,0BAAgB,EAAC,iCAAiB,CAAC;;sDACnB;8BAjBR,mBAAmB;IAD/B,IAAA,gBAAM,GAAE;GACI,mBAAmB,CAkB/B"}
package/lib/filter.d.ts CHANGED
@@ -1,7 +1,9 @@
1
- import { FindOperator, SelectQueryBuilder } from 'typeorm';
1
+ import { EntityMetadata, FindOperator, SelectQueryBuilder } from 'typeorm';
2
2
  import { WherePredicateOperator } from 'typeorm/query-builder/WhereClause';
3
3
  import { PaginateQuery } from './decorator';
4
4
  import { JoinMethod } from './helper';
5
+ import { EmbeddedMetadata } from 'typeorm/metadata/EmbeddedMetadata';
6
+ import { RelationMetadata } from 'typeorm/metadata/RelationMetadata';
5
7
  export declare enum FilterOperator {
6
8
  EQ = "$eq",
7
9
  GT = "$gt",
@@ -20,6 +22,12 @@ export declare enum FilterSuffix {
20
22
  NOT = "$not"
21
23
  }
22
24
  export declare function isSuffix(value: unknown): value is FilterSuffix;
25
+ export declare enum FilterQuantifier {
26
+ ALL = "$all",
27
+ ANY = "$any",
28
+ NONE = "$none"
29
+ }
30
+ export declare function isQuantifier(value: unknown): value is FilterQuantifier;
23
31
  export declare enum FilterComparator {
24
32
  AND = "$and",
25
33
  OR = "$or"
@@ -27,6 +35,7 @@ export declare enum FilterComparator {
27
35
  export declare function isComparator(value: unknown): value is FilterComparator;
28
36
  export declare const OperatorSymbolToFunction: Map<FilterOperator | FilterSuffix, (...args: any[]) => FindOperator<string>>;
29
37
  type Filter = {
38
+ quantifier: FilterQuantifier;
30
39
  comparator: FilterComparator;
31
40
  findOperator: FindOperator<string>;
32
41
  };
@@ -37,6 +46,7 @@ type ColumnJoinMethods = {
37
46
  [columnName: string]: JoinMethod;
38
47
  };
39
48
  export interface FilterToken {
49
+ quantifier: FilterQuantifier;
40
50
  comparator: FilterComparator;
41
51
  suffix?: FilterSuffix;
42
52
  operator: FilterOperator;
@@ -51,9 +61,35 @@ export declare function generatePredicateCondition(qb: SelectQueryBuilder<unknow
51
61
  export declare function addWhereCondition<T>(qb: SelectQueryBuilder<T>, column: string, filter: ColumnFilters): void;
52
62
  export declare function parseFilterToken(raw?: string): FilterToken | null;
53
63
  export declare function parseFilter<T>(query: PaginateQuery, filterableColumns?: {
54
- [column: string]: (FilterOperator | FilterSuffix)[] | true;
64
+ [column: string]: (FilterOperator | FilterSuffix | FilterQuantifier)[] | true;
55
65
  }, qb?: SelectQueryBuilder<T>): ColumnFilters;
66
+ /**
67
+ * Retrieves the relation path for a given column name within the provided metadata.
68
+ *
69
+ * This method analyzes the column name's segments to identify corresponding relations or embedded entities
70
+ * within the hierarchy described by the given metadata and returns a structured path.
71
+ *
72
+ * @param {string} columnName - The dot-delimited name of the column whose relation path is to be determined.
73
+ * @param {EntityMetadata | EmbeddedMetadata} metadata - The metadata of the entity or embedded component
74
+ * which holds the relations or embedded items.
75
+ * @return {[string, RelationMetadata | EmbeddedMetadata][]} The ordered array describing the path,
76
+ * where each element contains a field name and its corresponding relation or embedded metadata.
77
+ * Throws an error if no matching relation or embedded metadata is found.
78
+ */
79
+ export declare function getRelationPath(columnName: string, metadata: EntityMetadata | EmbeddedMetadata): [string, RelationMetadata | EmbeddedMetadata][];
56
80
  export declare function addFilter<T>(qb: SelectQueryBuilder<T>, query: PaginateQuery, filterableColumns?: {
57
- [column: string]: (FilterOperator | FilterSuffix)[] | true;
81
+ [column: string]: (FilterOperator | FilterSuffix | FilterQuantifier)[] | true;
58
82
  }): ColumnJoinMethods;
83
+ export declare function addDirectFilters<T>(qb: SelectQueryBuilder<T>, filter: ColumnFilters): void;
84
+ export declare function addToManySubFilters<T>(qb: SelectQueryBuilder<T>, filter: ColumnFilters, query: PaginateQuery, filterableColumns?: {
85
+ [column: string]: (FilterOperator | FilterSuffix | FilterQuantifier)[] | true;
86
+ }): void;
87
+ export declare function createSubFilter(query: PaginateQuery, filterableColumns: {
88
+ [column: string]: (FilterOperator | FilterSuffix | FilterQuantifier)[] | true;
89
+ }, column: string): {
90
+ subQuery: PaginateQuery;
91
+ subFilterableColumns: {
92
+ [column: string]: true | (FilterOperator | FilterSuffix | FilterQuantifier)[];
93
+ };
94
+ };
59
95
  export {};
package/lib/filter.js CHANGED
@@ -1,18 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OperatorSymbolToFunction = exports.FilterComparator = exports.FilterSuffix = exports.FilterOperator = void 0;
3
+ exports.OperatorSymbolToFunction = exports.FilterComparator = exports.FilterQuantifier = exports.FilterSuffix = exports.FilterOperator = void 0;
4
4
  exports.isOperator = isOperator;
5
5
  exports.isSuffix = isSuffix;
6
+ exports.isQuantifier = isQuantifier;
6
7
  exports.isComparator = isComparator;
7
8
  exports.fixQueryParam = fixQueryParam;
8
9
  exports.generatePredicateCondition = generatePredicateCondition;
9
10
  exports.addWhereCondition = addWhereCondition;
10
11
  exports.parseFilterToken = parseFilterToken;
11
12
  exports.parseFilter = parseFilter;
13
+ exports.getRelationPath = getRelationPath;
12
14
  exports.addFilter = addFilter;
15
+ exports.addDirectFilters = addDirectFilters;
16
+ exports.addToManySubFilters = addToManySubFilters;
17
+ exports.createSubFilter = createSubFilter;
13
18
  const lodash_1 = require("lodash");
14
19
  const typeorm_1 = require("typeorm");
15
20
  const helper_1 = require("./helper");
21
+ const paginate_1 = require("./paginate");
16
22
  var FilterOperator;
17
23
  (function (FilterOperator) {
18
24
  FilterOperator["EQ"] = "$eq";
@@ -32,11 +38,21 @@ function isOperator(value) {
32
38
  }
33
39
  var FilterSuffix;
34
40
  (function (FilterSuffix) {
41
+ // Used to negate a filter
35
42
  FilterSuffix["NOT"] = "$not";
36
43
  })(FilterSuffix || (exports.FilterSuffix = FilterSuffix = {}));
37
44
  function isSuffix(value) {
38
45
  return (0, lodash_1.values)(FilterSuffix).includes(value);
39
46
  }
47
+ var FilterQuantifier;
48
+ (function (FilterQuantifier) {
49
+ FilterQuantifier["ALL"] = "$all";
50
+ FilterQuantifier["ANY"] = "$any";
51
+ FilterQuantifier["NONE"] = "$none";
52
+ })(FilterQuantifier || (exports.FilterQuantifier = FilterQuantifier = {}));
53
+ function isQuantifier(value) {
54
+ return (0, lodash_1.values)(FilterQuantifier).includes(value);
55
+ }
40
56
  var FilterComparator;
41
57
  (function (FilterComparator) {
42
58
  FilterComparator["AND"] = "$and";
@@ -114,11 +130,12 @@ function addWhereCondition(qb, column, filter) {
114
130
  !['not', 'isNull', 'arrayContains'].includes(condition.operator)) {
115
131
  condition.parameters[0] = `cardinality(${condition.parameters[0]})`;
116
132
  }
133
+ const expression = qb['createWhereConditionExpression'](condition);
117
134
  if (columnFilter.comparator === FilterComparator.OR) {
118
- qb.orWhere(qb['createWhereConditionExpression'](condition), parameters);
135
+ qb.orWhere(expression, parameters);
119
136
  }
120
137
  else {
121
- qb.andWhere(qb['createWhereConditionExpression'](condition), parameters);
138
+ qb.andWhere(expression, parameters);
122
139
  }
123
140
  });
124
141
  }
@@ -127,19 +144,23 @@ function parseFilterToken(raw) {
127
144
  return null;
128
145
  }
129
146
  const token = {
147
+ quantifier: FilterQuantifier.ANY,
130
148
  comparator: FilterComparator.AND,
131
149
  suffix: undefined,
132
150
  operator: FilterOperator.EQ,
133
151
  value: raw,
134
152
  };
135
- const MAX_OPERTATOR = 4; // max 4 operator es: $and:$not:$eq:$null
153
+ const MAX_OPERATOR = 5; // max 5 operator: $none:$and:$not:$eq:$null
136
154
  const OPERAND_SEPARATOR = ':';
137
155
  const matches = raw.split(OPERAND_SEPARATOR);
138
- const maxOperandCount = matches.length > MAX_OPERTATOR ? MAX_OPERTATOR : matches.length;
156
+ const maxOperandCount = matches.length > MAX_OPERATOR ? MAX_OPERATOR : matches.length;
139
157
  const notValue = [];
140
158
  for (let i = 0; i < maxOperandCount; i++) {
141
159
  const match = matches[i];
142
- if (isComparator(match)) {
160
+ if (isQuantifier(match)) {
161
+ token.quantifier = match;
162
+ }
163
+ else if (isComparator(match)) {
143
164
  token.comparator = match;
144
165
  }
145
166
  else if (isSuffix(match)) {
@@ -155,9 +176,11 @@ function parseFilterToken(raw) {
155
176
  }
156
177
  if (notValue.length) {
157
178
  token.value =
158
- token.operator === FilterOperator.NULL
159
- ? undefined
160
- : raw.replace(`${notValue.join(OPERAND_SEPARATOR)}${OPERAND_SEPARATOR}`, '');
179
+ !raw.includes(OPERAND_SEPARATOR) || token.operator === FilterOperator.NULL
180
+ ? // things like `$null`, `$none`, and `$any`, have no token value
181
+ undefined
182
+ : // otherwise, remove the operators and separators from the raw string to obtain the token value
183
+ raw.replace(`${notValue.join(OPERAND_SEPARATOR)}${OPERAND_SEPARATOR}`, '');
161
184
  }
162
185
  return token;
163
186
  }
@@ -209,8 +232,12 @@ function parseFilter(query, filterableColumns, qb) {
209
232
  if (token.suffix && !allowedOperators.includes(token.suffix)) {
210
233
  continue;
211
234
  }
235
+ if (token.quantifier !== FilterQuantifier.ANY && !allowedOperators.includes(token.quantifier)) {
236
+ continue;
237
+ }
212
238
  }
213
239
  const params = {
240
+ quantifier: token.quantifier,
214
241
  comparator: token.comparator,
215
242
  findOperator: undefined,
216
243
  };
@@ -258,6 +285,7 @@ function parseFilter(query, filterableColumns, qb) {
258
285
  {
259
286
  comparator: i === 0 ? params.comparator : FilterComparator.OR,
260
287
  findOperator: (0, typeorm_1.JsonContains)(buildContainment(val.trim())),
288
+ quantifier: FilterQuantifier.ANY,
261
289
  },
262
290
  ];
263
291
  });
@@ -268,6 +296,7 @@ function parseFilter(query, filterableColumns, qb) {
268
296
  {
269
297
  comparator: params.comparator,
270
298
  findOperator: (0, typeorm_1.JsonContains)(buildContainment(token.value)),
299
+ quantifier: FilterQuantifier.ANY,
271
300
  },
272
301
  ];
273
302
  }
@@ -304,11 +333,109 @@ function parseFilter(query, filterableColumns, qb) {
304
333
  }
305
334
  return filter;
306
335
  }
336
+ class RelationPathError extends Error {
337
+ }
338
+ /**
339
+ * Retrieves the relation path for a given column name within the provided metadata.
340
+ *
341
+ * This method analyzes the column name's segments to identify corresponding relations or embedded entities
342
+ * within the hierarchy described by the given metadata and returns a structured path.
343
+ *
344
+ * @param {string} columnName - The dot-delimited name of the column whose relation path is to be determined.
345
+ * @param {EntityMetadata | EmbeddedMetadata} metadata - The metadata of the entity or embedded component
346
+ * which holds the relations or embedded items.
347
+ * @return {[string, RelationMetadata | EmbeddedMetadata][]} The ordered array describing the path,
348
+ * where each element contains a field name and its corresponding relation or embedded metadata.
349
+ * Throws an error if no matching relation or embedded metadata is found.
350
+ */
351
+ function getRelationPath(columnName, metadata) {
352
+ const relationSegments = columnName.split('.');
353
+ const deeper = relationSegments.slice(1).join('.');
354
+ const fieldName = relationSegments[0].replace(/[()]/g, '');
355
+ try {
356
+ // Check if there's a relation with this property name
357
+ const relation = metadata.relations.find((r) => r.propertyName === fieldName);
358
+ if (relation) {
359
+ return [
360
+ [fieldName, relation],
361
+ ...(relationSegments.length > 1 ? getRelationPath(deeper, relation.inverseEntityMetadata) : []),
362
+ ];
363
+ }
364
+ // Check if there's something embedded with this property name
365
+ const embedded = metadata.embeddeds.find((embedded) => embedded.propertyName === fieldName);
366
+ if (embedded) {
367
+ return [
368
+ [fieldName, embedded],
369
+ ...(relationSegments.length > 1 ? getRelationPath(deeper, embedded) : []),
370
+ ];
371
+ }
372
+ }
373
+ catch (e) {
374
+ if (e instanceof RelationPathError) {
375
+ throw new RelationPathError(`No relation or embedded found for property path ${columnName}`);
376
+ }
377
+ throw e;
378
+ }
379
+ if (relationSegments.length > 1)
380
+ throw new RelationPathError(`No relation or embedded found for property path ${columnName}`);
381
+ return [];
382
+ }
383
+ /**
384
+ * Finds the first 'to-many' relationship in a given entity metadata or embedded metadata
385
+ * given a column name. A 'to-many' relationship can be either a one-to-many or a
386
+ * many-to-many relationship.
387
+ *
388
+ * @param {string} columnName - The column name to traverse through its segments and find relationships.
389
+ * @param {EntityMetadata | EmbeddedMetadata} metadata - The metadata of the entity or
390
+ * embedded object in which relationships are defined.
391
+ * @return {{ path: string[]; relation: RelationMetadata } | undefined} An object containing
392
+ * the path to the 'to-many' relationship and the relationship metadata, or undefined if no
393
+ * 'to-many' relationships are found.
394
+ */
395
+ function findFirstToManyRelationship(columnName, metadata) {
396
+ const relationPath = getRelationPath(columnName, metadata);
397
+ const relationSegments = columnName.split('.');
398
+ const firstToMany = relationPath.findIndex(([, relation]) => 'isOneToMany' in relation && (relation.isOneToMany || relation.isManyToMany));
399
+ if (firstToMany > -1)
400
+ return {
401
+ path: relationSegments.slice(0, firstToMany + 1),
402
+ relation: relationPath[firstToMany][1],
403
+ };
404
+ }
307
405
  function addFilter(qb, query, filterableColumns) {
406
+ const mainMetadata = qb.expressionMap.mainAlias.metadata;
308
407
  const filter = parseFilter(query, filterableColumns, qb);
408
+ addDirectFilters(qb, filter);
409
+ addToManySubFilters(qb, filter, query, filterableColumns);
410
+ // Direct filters require to be joined, so pass the join information back up to the main pagination builder
411
+ // (or the parent filter query in case of subfilters)
412
+ const columnJoinMethods = {};
413
+ for (const [key] of Object.entries(filter)) {
414
+ const relationPath = getRelationPath(key, mainMetadata);
415
+ // Skip filters that don't result in WHERE clauses and so don't need to be joined..
416
+ if (relationPath.find(([, relation]) => 'isOneToMany' in relation && (relation.isOneToMany || relation.isManyToMany))) {
417
+ continue;
418
+ }
419
+ for (let i = 0; i < relationPath.length; i++) {
420
+ const column = relationPath
421
+ .slice(0, i + 1)
422
+ .map((p) => p[0])
423
+ .join('.');
424
+ // Skip joins on embedded entities
425
+ if ('inverseRelation' in relationPath[i][1]) {
426
+ columnJoinMethods[column] = 'innerJoinAndSelect';
427
+ }
428
+ }
429
+ }
430
+ return columnJoinMethods;
431
+ }
432
+ function addDirectFilters(qb, filter) {
309
433
  const filterEntries = Object.entries(filter);
310
- const orFilters = filterEntries.filter(([_, value]) => value[0].comparator === '$or');
311
- const andFilters = filterEntries.filter(([_, value]) => value[0].comparator === '$and');
434
+ const metadata = qb.expressionMap.mainAlias.metadata;
435
+ // Direct filters are those without toMany relationships on their path, and can be expressed as simple JOINs + WHERE clauses
436
+ const whereFilters = filterEntries.filter(([key]) => !findFirstToManyRelationship(key, metadata));
437
+ const orFilters = whereFilters.filter(([, value]) => value[0].comparator === '$or');
438
+ const andFilters = whereFilters.filter(([, value]) => value[0].comparator === '$and');
312
439
  qb.andWhere(new typeorm_1.Brackets((qb) => {
313
440
  for (const [column] of orFilters) {
314
441
  addWhereCondition(qb, column, filter);
@@ -319,16 +446,135 @@ function addFilter(qb, query, filterableColumns) {
319
446
  addWhereCondition(qb, column, filter);
320
447
  }));
321
448
  }
322
- // Set the join type of every relationship used in a filter to `innerJoinAndSelect`
323
- // so that records without that relationships don't show up in filters on their columns.
324
- return Object.fromEntries(filterEntries
325
- .map(([key]) => [key, (0, helper_1.getPropertiesByColumnName)(key)])
326
- .filter(([, properties]) => properties.propertyPath)
327
- .flatMap(([, properties]) => {
328
- const nesting = properties.column.split('.');
329
- return Array.from({ length: nesting.length - 1 }, (_, i) => nesting.slice(0, i + 1).join('.'))
330
- .filter((relation) => (0, helper_1.checkIsNestedRelation)(qb, relation))
331
- .map((relation) => [relation, 'innerJoinAndSelect']);
332
- }));
449
+ }
450
+ function addToManySubFilters(qb, filter, query, filterableColumns) {
451
+ const dbType = qb.connection.options.type;
452
+ const quote = (column) => (0, helper_1.quoteColumn)(column, ['mysql', 'mariadb'].includes(dbType));
453
+ const mainMetadata = qb.expressionMap.mainAlias.metadata;
454
+ const filterEntries = Object.entries(filter);
455
+ // Filters with toMany relationships on their path need to be expressed as EXISTS subqueries.
456
+ const existsFilters = filterEntries.map(([key]) => findFirstToManyRelationship(key, mainMetadata)).filter(Boolean);
457
+ // Find all the different toMany starting paths
458
+ const toManyPaths = [...new Set(existsFilters.map((f) => f.path.join('.')))];
459
+ const toManyRelations = toManyPaths.map((path) => [path, existsFilters.find((f) => f.path.join('.') === path).relation]);
460
+ for (const [path, relation] of toManyRelations) {
461
+ const mainQueryAlias = qb.alias;
462
+ const relationPath = getRelationPath(path, mainMetadata);
463
+ const toManyAlias = `_rel_${relationPath[relationPath.length - 1][0]}_${relationPath.length - 1}`;
464
+ // 1. Create the EXISTS subquery, starting from the toMany entity
465
+ const existsMetadata = relation.inverseEntityMetadata;
466
+ const existsQb = qb.connection.createQueryBuilder(existsMetadata.target, toManyAlias);
467
+ if (existsMetadata.deleteDateColumn) {
468
+ //existsQb.andWhere(`"${toManyAlias}"."${existsMetadata.deleteDateColumn.databaseName}" IS NULL`)
469
+ }
470
+ // 2. Add the subfilters to the EXISTS subquery
471
+ const { subQuery, subFilterableColumns } = createSubFilter(query, filterableColumns, path);
472
+ const subJoins = addFilter(existsQb, subQuery, subFilterableColumns);
473
+ // 3. Add the sub relationship joins to the EXISTS subquery
474
+ const relationsSchema = (0, helper_1.mergeRelationSchema)((0, helper_1.createRelationSchema)(Object.keys(subJoins)));
475
+ // Only inner join, no need to select anything
476
+ (0, paginate_1.addRelationsFromSchema)(existsQb, relationsSchema, {}, 'innerJoin');
477
+ // 4. Build the chain of joins that backtracks our toMany relationship to the root.
478
+ // We iterate from the second-to-last item (the immediate parent) back to the first item (root's child)
479
+ for (let i = relationPath.length - 1; i >= 0; i--) {
480
+ const [, meta] = relationPath[i];
481
+ // --- A: Skip Embedded Entities ---
482
+ if (meta.type === 'embedded') {
483
+ // Embedded entities exist within the current table (currentChildAlias).
484
+ // They do not require a JOIN, so we simply continue to the next item in the path.
485
+ continue;
486
+ }
487
+ // --- B: Handle Table Relation (RelationMetadata) ---
488
+ // If we reach this point, 'meta' is a RelationMetadata object.
489
+ const parentMeta = meta;
490
+ // Check if this is an intermediate or top-level relationship
491
+ if (i !== 0) {
492
+ // --- Intermediate Join (Joining two non-root tables within the subquery) ---
493
+ const parentAlias = `_rel_${relationPath[i - 1][0]}_${i - 1}`;
494
+ const childAlias = `_rel_${relationPath[i][0]}_${i}`;
495
+ const childRelationMetadata = parentMeta.inverseRelation;
496
+ // Get the join columns from the inverse relation of the current metadata (e.g., inverse of 'pillows')
497
+ const joinCols = childRelationMetadata.joinColumns;
498
+ // Construct the ON condition (handles composite keys)
499
+ const onConditions = joinCols
500
+ .map((jc) => {
501
+ const fk = jc.databaseName;
502
+ const pk = jc.referencedColumn.databaseName;
503
+ return `${quote(childAlias)}.${quote(fk)} = ${quote(parentAlias)}.${quote(pk)}`;
504
+ })
505
+ .join(' AND ');
506
+ // Add the INNER JOIN to the subquery
507
+ existsQb.innerJoin(childRelationMetadata.inverseRelation.entityMetadata.target, parentAlias, onConditions);
508
+ }
509
+ else {
510
+ // Perform the final correlation WHERE clause to the main query alias
511
+ const joinMeta = parentMeta.isOwning ? parentMeta : parentMeta.inverseRelation;
512
+ for (const joinColumn of joinMeta.joinColumns) {
513
+ // 1. Get the raw column names from the owning metadata:
514
+ const fkColumn = joinColumn.databaseName;
515
+ const pkColumn = joinColumn.referencedColumn.databaseName;
516
+ // 2. Get the table aliases
517
+ let fkAlias;
518
+ let pkAlias;
519
+ if (parentMeta.isOwning) {
520
+ pkAlias = `_rel_${relationPath[0][0]}_0`;
521
+ fkAlias = mainQueryAlias;
522
+ }
523
+ else {
524
+ fkAlias = `_rel_${relationPath[0][0]}_0`;
525
+ pkAlias = mainQueryAlias;
526
+ }
527
+ // Correlation
528
+ existsQb.andWhere(`${quote(fkAlias)}.${quote(fkColumn)} = ${quote(pkAlias)}.${quote(pkColumn)}`);
529
+ }
530
+ }
531
+ }
532
+ const quantifiers = Object.entries(filter)
533
+ .filter(([key]) => key.startsWith(path))
534
+ .flatMap(([, multiFilter]) => multiFilter.map((f) => f.quantifier));
535
+ let quantifier = FilterQuantifier.ANY;
536
+ for (const q of quantifiers) {
537
+ if (q !== FilterQuantifier.ANY) {
538
+ if (quantifier !== FilterQuantifier.ANY && quantifier !== q) {
539
+ throw new Error(`Quantifier ${quantifier} and ${q} are not compatible for the same column ${path}`);
540
+ }
541
+ quantifier = q;
542
+ }
543
+ }
544
+ // 5. Add the EXISTS subquery to the main query
545
+ if (quantifier === FilterQuantifier.ANY) {
546
+ qb.andWhereExists(existsQb);
547
+ }
548
+ else if (quantifier === FilterQuantifier.NONE) {
549
+ (0, helper_1.andWhereNoneExist)(qb, existsQb);
550
+ }
551
+ else if (quantifier === FilterQuantifier.ALL) {
552
+ (0, helper_1.andWhereAllExist)(qb, existsQb);
553
+ }
554
+ }
555
+ }
556
+ function createSubFilter(query, filterableColumns, column) {
557
+ const subQuery = { filter: {} };
558
+ for (const [subColumn, filter] of Object.entries(query.filter)) {
559
+ if (subColumn.startsWith(column + '.')) {
560
+ subQuery.filter[getSubColumn(column, subColumn)] = filter;
561
+ }
562
+ }
563
+ const subFilterableColumns = {};
564
+ for (const [subColumn, filter] of Object.entries(filterableColumns)) {
565
+ if (subColumn.startsWith(column + '.')) {
566
+ subFilterableColumns[getSubColumn(column, subColumn)] = filter;
567
+ }
568
+ }
569
+ return { subQuery, subFilterableColumns };
570
+ }
571
+ function getSubColumn(column, subColumn) {
572
+ const sliced = subColumn.slice(column.length + 1);
573
+ if (sliced.startsWith('(') && sliced.endsWith(')')) {
574
+ // Embedded relationships need to be unpacked from subColumn.(embedded.property) to
575
+ // embedded.property
576
+ return sliced.slice(1, -1);
577
+ }
578
+ return sliced;
333
579
  }
334
580
  //# sourceMappingURL=filter.js.map
package/lib/filter.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"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"}