@ptc-org/nestjs-query-mongoose 6.1.3 → 7.0.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ptc-org/nestjs-query-mongoose",
3
- "version": "6.1.3",
3
+ "version": "7.0.1",
4
4
  "description": "Mongoose adapter for @ptc-org/nestjs-query-core",
5
5
  "author": "doug-martin <doug@dougamartin.com>",
6
6
  "homepage": "https://github.com/tripss/nestjs-query#readme",
@@ -21,14 +21,14 @@
21
21
  "camel-case": "^4.1.2",
22
22
  "lodash.escaperegexp": "^4.1.2",
23
23
  "lodash.merge": "^4.6.2",
24
- "tslib": "^2.6.2",
25
- "@ptc-org/nestjs-query-core": "6.1.3",
24
+ "tslib": "^2.6.3",
25
+ "@ptc-org/nestjs-query-core": "7.0.1",
26
26
  "reflect-metadata": "0.2.2"
27
27
  },
28
28
  "peerDependencies": {
29
29
  "@nestjs/common": "^9.0.0 || ^10.0.0",
30
30
  "@nestjs/mongoose": "^9.0.0 || ^10.0.0",
31
- "mongoose": "^6.5.0 || ^7.0.0 || ^8.0.0"
31
+ "mongoose": "^8.0.0"
32
32
  },
33
33
  "repository": {
34
34
  "type": "git",
package/src/module.d.ts CHANGED
@@ -22,6 +22,7 @@
22
22
  /// <reference types="mongoose/types/validation" />
23
23
  /// <reference types="mongoose/types/virtuals" />
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
+ /// <reference types="mongoose/types/inferrawdoctype" />
25
26
  import { DynamicModule } from '@nestjs/common';
26
27
  import { Document } from 'mongoose';
27
28
  import { NestjsQueryModelDefinition } from './providers';
@@ -22,6 +22,7 @@
22
22
  /// <reference types="mongoose/types/validation" />
23
23
  /// <reference types="mongoose/types/virtuals" />
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
+ /// <reference types="mongoose/types/inferrawdoctype" />
25
26
  import { SchemaType } from 'mongoose';
26
27
  export type ReferenceOptions = {
27
28
  type: SchemaType;
@@ -22,6 +22,7 @@
22
22
  /// <reference types="mongoose/types/validation" />
23
23
  /// <reference types="mongoose/types/virtuals" />
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
+ /// <reference types="mongoose/types/inferrawdoctype" />
25
26
  import { FactoryProvider } from '@nestjs/common';
26
27
  import { ModelDefinition } from '@nestjs/mongoose';
27
28
  import { Class } from '@ptc-org/nestjs-query-core';
@@ -22,6 +22,7 @@
22
22
  /// <reference types="mongoose/types/validation" />
23
23
  /// <reference types="mongoose/types/virtuals" />
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
+ /// <reference types="mongoose/types/inferrawdoctype" />
25
26
  import { AggregateQuery, AggregateQueryField, AggregateResponse } from '@ptc-org/nestjs-query-core';
26
27
  import { Document } from 'mongoose';
27
28
  type Aggregate = Record<string, Record<string, unknown>>;
@@ -22,6 +22,7 @@
22
22
  /// <reference types="mongoose/types/validation" />
23
23
  /// <reference types="mongoose/types/virtuals" />
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
+ /// <reference types="mongoose/types/inferrawdoctype" />
25
26
  import { CommonFieldComparisonBetweenType, FilterComparisonOperators } from '@ptc-org/nestjs-query-core';
26
27
  import { Document, FilterQuery, Model as MongooseModel } from 'mongoose';
27
28
  /**
@@ -22,6 +22,7 @@
22
22
  /// <reference types="mongoose/types/validation" />
23
23
  /// <reference types="mongoose/types/virtuals" />
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
+ /// <reference types="mongoose/types/inferrawdoctype" />
25
26
  import { AggregateQuery, Filter, Query, SortField } from '@ptc-org/nestjs-query-core';
26
27
  import { Document, FilterQuery, Model as MongooseModel } from 'mongoose';
27
28
  import { AggregateBuilder, MongooseGroupAndAggregate } from './aggregate.builder';
@@ -22,6 +22,7 @@
22
22
  /// <reference types="mongoose/types/validation" />
23
23
  /// <reference types="mongoose/types/virtuals" />
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
+ /// <reference types="mongoose/types/inferrawdoctype" />
25
26
  import { Filter } from '@ptc-org/nestjs-query-core';
26
27
  import { Document, FilterQuery, Model as MongooseModel } from 'mongoose';
27
28
  import { ComparisonBuilder } from './comparison.builder';
@@ -22,6 +22,7 @@
22
22
  /// <reference types="mongoose/types/validation" />
23
23
  /// <reference types="mongoose/types/virtuals" />
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
+ /// <reference types="mongoose/types/inferrawdoctype" />
25
26
  import { AggregateQuery, AggregateResponse, DeepPartial, DeleteManyResponse, DeleteOneOptions, Filter, FindByIdOptions, GetByIdOptions, Query, QueryService, UpdateManyResponse, UpdateOneOptions } from '@ptc-org/nestjs-query-core';
26
27
  import { Document, Model as MongooseModel } from 'mongoose';
27
28
  import { FilterQueryBuilder } from '../query';
@@ -22,6 +22,7 @@
22
22
  /// <reference types="mongoose/types/validation" />
23
23
  /// <reference types="mongoose/types/virtuals" />
24
24
  /// <reference types="mongoose/types/inferschematype" />
25
+ /// <reference types="mongoose/types/inferrawdoctype" />
25
26
  import { AggregateQuery, AggregateResponse, Class, Filter, FindRelationOptions, GetByIdOptions, ModifyRelationOptions, Query } from '@ptc-org/nestjs-query-core';
26
27
  import { Document, Model as MongooseModel } from 'mongoose';
27
28
  export declare abstract class ReferenceQueryService<Entity extends Document> {
@@ -31,10 +32,44 @@ export declare abstract class ReferenceQueryService<Entity extends Document> {
31
32
  aggregateRelations<Relation extends Document>(RelationClass: Class<Relation>, relationName: string, dto: Entity, filter: Filter<Relation>, aggregate: AggregateQuery<Relation>): Promise<AggregateResponse<Relation>[]>;
32
33
  countRelations<Relation extends Document>(RelationClass: Class<Relation>, relationName: string, entities: Entity[], filter: Filter<Relation>): Promise<Map<Entity, number>>;
33
34
  countRelations<Relation extends Document>(RelationClass: Class<Relation>, relationName: string, dto: Entity, filter: Filter<Relation>): Promise<number>;
34
- findRelation<Relation>(RelationClass: Class<Relation>, relationName: string, dtos: Entity[], opts?: FindRelationOptions<Relation>): Promise<Map<Entity, Relation | undefined>>;
35
- findRelation<Relation>(RelationClass: Class<Relation>, relationName: string, dto: Entity, opts?: FindRelationOptions<Relation>): Promise<Relation | undefined>;
36
- queryRelations<Relation>(RelationClass: Class<Relation>, relationName: string, entities: Entity[], query: Query<Relation>): Promise<Map<Entity, Relation[]>>;
37
- queryRelations<Relation>(RelationClass: Class<Relation>, relationName: string, dto: Entity, query: Query<Relation>): Promise<Relation[]>;
35
+ findRelation<Relation extends Document>(RelationClass: Class<Relation>, relationName: string, dtos: Entity[], opts?: FindRelationOptions<Relation>): Promise<Map<Entity, Relation | undefined>>;
36
+ findRelation<Relation extends Document>(RelationClass: Class<Relation>, relationName: string, dto: Entity, opts?: FindRelationOptions<Relation>): Promise<Relation | undefined>;
37
+ /**
38
+ * Query for an array of relations for multiple dtos.
39
+ * @param RelationClass - The class to serialize the relations into.
40
+ * @param dtos - The entities to query relations for.
41
+ * @param relationName - The name of relation to query for.
42
+ * @param opts - A query to filter, page or sort relations.
43
+ * @param withDeleted - Also query the soft deleted records
44
+ */
45
+ private batchQueryRelations;
46
+ /**
47
+ * Query for an array of relations for multiple dtos.
48
+ * @param RelationClass - The class to serialize the relations into.
49
+ * @param entities - The entities to query relations for.
50
+ * @param relationName - The name of relation to query for.
51
+ * @param filter - Filter.
52
+ * @param query - A query to filter, page or sort relations.
53
+ */
54
+ private batchAggregateRelations;
55
+ /**
56
+ * Count the number of relations for multiple dtos.
57
+ * @param RelationClass - The class to serialize the relations into.
58
+ * @param entities - The entities to query relations for.
59
+ * @param relationName - The name of relation to query for.
60
+ * @param filter - The filter to apply to the relation query.
61
+ */
62
+ private batchCountRelations;
63
+ /**
64
+ * Query for a relation for multiple dtos.
65
+ * @param RelationClass - The class to serialize the relations into.
66
+ * @param dtos - The dto to query relations for.
67
+ * @param relationName - The name of relation to query for.
68
+ * @param opts - A query to filter, page or sort relations.
69
+ */
70
+ private batchFindRelations;
71
+ queryRelations<Relation extends Document>(RelationClass: Class<Relation>, relationName: string, entities: Entity[], query: Query<Relation>): Promise<Map<Entity, Relation[]>>;
72
+ queryRelations<Relation extends Document>(RelationClass: Class<Relation>, relationName: string, dto: Entity, query: Query<Relation>): Promise<Relation[]>;
38
73
  addRelations<Relation extends Document>(relationName: string, id: string, relationIds: (string | number)[], opts?: ModifyRelationOptions<Entity, Relation>): Promise<Entity>;
39
74
  setRelations<Relation extends Document>(relationName: string, id: string, relationIds: (string | number)[], opts?: ModifyRelationOptions<Entity, Relation>): Promise<Entity>;
40
75
  setRelation<Relation extends Document>(relationName: string, id: string | number, relationId: string | number, opts?: ModifyRelationOptions<Entity, Relation>): Promise<Entity>;
@@ -46,7 +81,7 @@ export declare abstract class ReferenceQueryService<Entity extends Document> {
46
81
  private getReferenceQueryBuilder;
47
82
  private getReferenceModel;
48
83
  private getReferenceFilter;
49
- private getObjectIdReferenceFilter;
50
- private getVirtualReferenceFilter;
84
+ private getReferenceIds;
85
+ private getReferenceFieldMap;
51
86
  private getRefCount;
52
87
  }
@@ -9,16 +9,12 @@ const query_1 = require("../query");
9
9
  class ReferenceQueryService {
10
10
  async aggregateRelations(RelationClass, relationName, dto, filter, aggregateQuery) {
11
11
  this.checkForReference('AggregateRelations', relationName);
12
- const relationModel = this.getReferenceModel(relationName);
13
- const referenceQueryBuilder = this.getReferenceQueryBuilder(relationName);
14
12
  if (Array.isArray(dto)) {
15
- return dto.reduce(async (mapPromise, entity) => {
16
- const map = await mapPromise;
17
- const refs = await this.aggregateRelations(RelationClass, relationName, entity, filter, aggregateQuery);
18
- return map.set(entity, refs);
19
- }, Promise.resolve(new Map()));
13
+ return this.batchAggregateRelations(RelationClass, relationName, dto, filter, aggregateQuery);
20
14
  }
21
15
  const assembler = nestjs_query_core_1.AssemblerFactory.getAssembler(RelationClass, mongoose_1.Document);
16
+ const relationModel = this.getReferenceModel(relationName);
17
+ const referenceQueryBuilder = this.getReferenceQueryBuilder(relationName);
22
18
  const refFilter = this.getReferenceFilter(relationName, dto, assembler.convertQuery({ filter }).filter);
23
19
  if (!refFilter) {
24
20
  return [];
@@ -34,11 +30,7 @@ class ReferenceQueryService {
34
30
  async countRelations(RelationClass, relationName, dto, filter) {
35
31
  this.checkForReference('CountRelations', relationName);
36
32
  if (Array.isArray(dto)) {
37
- return dto.reduce(async (mapPromise, entity) => {
38
- const map = await mapPromise;
39
- const refs = await this.countRelations(RelationClass, relationName, entity, filter);
40
- return map.set(entity, refs);
41
- }, Promise.resolve(new Map()));
33
+ return this.batchCountRelations(RelationClass, relationName, dto, filter);
42
34
  }
43
35
  const assembler = nestjs_query_core_1.AssemblerFactory.getAssembler(RelationClass, mongoose_1.Document);
44
36
  const relationModel = this.getReferenceModel(relationName);
@@ -51,39 +43,126 @@ class ReferenceQueryService {
51
43
  }
52
44
  async findRelation(RelationClass, relationName, dto, opts) {
53
45
  this.checkForReference('FindRelation', relationName);
54
- const referenceQueryBuilder = this.getReferenceQueryBuilder(relationName);
55
46
  if (Array.isArray(dto)) {
56
- return dto.reduce(async (prev, curr) => {
57
- const map = await prev;
58
- const ref = await this.findRelation(RelationClass, relationName, curr, opts);
59
- return map.set(curr, ref);
60
- }, Promise.resolve(new Map()));
47
+ return this.batchFindRelations(RelationClass, relationName, dto, opts);
61
48
  }
62
49
  const foundEntity = await this.Model.findById(dto._id ?? dto.id);
63
50
  if (!foundEntity) {
64
51
  return undefined;
65
52
  }
66
53
  const assembler = nestjs_query_core_1.AssemblerFactory.getAssembler(RelationClass, mongoose_1.Document);
54
+ const referenceQueryBuilder = this.getReferenceQueryBuilder(relationName);
67
55
  const filterQuery = referenceQueryBuilder.buildFilterQuery(assembler.convertQuery({ filter: opts?.filter }).filter);
68
56
  const populated = await foundEntity.populate({ path: relationName, match: filterQuery });
69
57
  const populatedRef = populated.get(relationName);
70
58
  return populatedRef ? assembler.convertToDTO(populatedRef) : undefined;
71
59
  }
60
+ /**
61
+ * Query for an array of relations for multiple dtos.
62
+ * @param RelationClass - The class to serialize the relations into.
63
+ * @param dtos - The entities to query relations for.
64
+ * @param relationName - The name of relation to query for.
65
+ * @param opts - A query to filter, page or sort relations.
66
+ * @param withDeleted - Also query the soft deleted records
67
+ */
68
+ async batchQueryRelations(RelationClass, relationName, dtos, opts, withDeleted) {
69
+ const assembler = nestjs_query_core_1.AssemblerFactory.getAssembler(RelationClass, mongoose_1.Document);
70
+ const referenceQueryBuilder = this.getReferenceQueryBuilder(relationName);
71
+ const query = assembler.convertQuery(opts);
72
+ // If paging is enabled, we need to query each entity individually
73
+ if (query.paging) {
74
+ const entityRelations = await Promise.all(dtos.map((d) => this.queryRelations(RelationClass, relationName, d, opts)));
75
+ return entityRelations.reduce((results, relations, index) => {
76
+ const e = dtos[index];
77
+ results.set(e, relations);
78
+ return results;
79
+ }, new Map());
80
+ }
81
+ const refFilter = this.getReferenceFilter(relationName, dtos, query.filter);
82
+ const results = new Map();
83
+ if (!refFilter) {
84
+ return results;
85
+ }
86
+ const refFieldMap = this.getReferenceFieldMap(relationName);
87
+ if (!refFieldMap) {
88
+ return results;
89
+ }
90
+ const { filterQuery, options } = referenceQueryBuilder.buildQuery({ ...query, filter: refFilter });
91
+ const referenceModel = this.getReferenceModel(relationName);
92
+ const entityRelations = await referenceModel.find(filterQuery).sort(options.sort).exec();
93
+ for (const dto of dtos) {
94
+ const referenceIds = this.getReferenceIds(refFieldMap.localField, dto);
95
+ const refs = entityRelations.filter((er) => {
96
+ return referenceIds.some((rid) => {
97
+ const oneOrManyIds = er[refFieldMap.foreignField];
98
+ const ids = (Array.isArray(oneOrManyIds) ? oneOrManyIds : [oneOrManyIds]);
99
+ return ids.some((id) => id.equals(rid));
100
+ });
101
+ });
102
+ results.set(dto, await assembler.convertToDTOs(refs));
103
+ }
104
+ return results;
105
+ }
106
+ /**
107
+ * Query for an array of relations for multiple dtos.
108
+ * @param RelationClass - The class to serialize the relations into.
109
+ * @param entities - The entities to query relations for.
110
+ * @param relationName - The name of relation to query for.
111
+ * @param filter - Filter.
112
+ * @param query - A query to filter, page or sort relations.
113
+ */
114
+ async batchAggregateRelations(RelationClass, relationName, entities, filter, query) {
115
+ const entityRelations = await Promise.all(entities.map((e) => this.aggregateRelations(RelationClass, relationName, e, filter, query)));
116
+ return entityRelations.reduce((results, relationAggregate, index) => {
117
+ const e = entities[index];
118
+ results.set(e, relationAggregate);
119
+ return results;
120
+ }, new Map());
121
+ }
122
+ /**
123
+ * Count the number of relations for multiple dtos.
124
+ * @param RelationClass - The class to serialize the relations into.
125
+ * @param entities - The entities to query relations for.
126
+ * @param relationName - The name of relation to query for.
127
+ * @param filter - The filter to apply to the relation query.
128
+ */
129
+ async batchCountRelations(RelationClass, relationName, entities, filter) {
130
+ const entityRelations = await Promise.all(entities.map((e) => this.countRelations(RelationClass, relationName, e, filter)));
131
+ return entityRelations.reduce((results, relationCount, index) => {
132
+ const e = entities[index];
133
+ results.set(e, relationCount);
134
+ return results;
135
+ }, new Map());
136
+ }
137
+ /**
138
+ * Query for a relation for multiple dtos.
139
+ * @param RelationClass - The class to serialize the relations into.
140
+ * @param dtos - The dto to query relations for.
141
+ * @param relationName - The name of relation to query for.
142
+ * @param opts - A query to filter, page or sort relations.
143
+ */
144
+ async batchFindRelations(RelationClass, relationName, dtos, opts) {
145
+ const batchResults = await this.batchQueryRelations(RelationClass, relationName, dtos, {
146
+ filter: opts?.filter
147
+ }, opts?.withDeleted);
148
+ const results = new Map();
149
+ batchResults.forEach((relation, dto) => {
150
+ // get just the first one.
151
+ results.set(dto, relation[0]);
152
+ });
153
+ return results;
154
+ }
72
155
  async queryRelations(RelationClass, relationName, dto, query) {
73
156
  this.checkForReference('QueryRelations', relationName);
74
- const referenceQueryBuilder = this.getReferenceQueryBuilder(relationName);
75
157
  if (Array.isArray(dto)) {
76
- return dto.reduce(async (mapPromise, entity) => {
77
- const map = await mapPromise;
78
- const refs = await this.queryRelations(RelationClass, relationName, entity, query);
79
- return map.set(entity, refs);
80
- }, Promise.resolve(new Map()));
158
+ return this.batchQueryRelations(RelationClass, relationName, dto, query);
81
159
  }
82
160
  const foundEntity = await this.Model.findById(dto._id ?? dto.id);
83
161
  if (!foundEntity) {
84
162
  return [];
85
163
  }
86
164
  const assembler = nestjs_query_core_1.AssemblerFactory.getAssembler(RelationClass, mongoose_1.Document);
165
+ const referenceQueryBuilder = this.getReferenceQueryBuilder(relationName);
87
166
  const { filterQuery, options } = referenceQueryBuilder.buildQuery(assembler.convertQuery(query));
88
167
  const populated = await foundEntity.populate({ path: relationName, match: filterQuery, options });
89
168
  return assembler.convertToDTOs(populated.get(relationName));
@@ -195,34 +274,39 @@ class ReferenceQueryService {
195
274
  throw new Error(`Unable to lookup reference type for ${refName}`);
196
275
  }
197
276
  getReferenceFilter(refName, entity, filter) {
277
+ const refFieldMap = this.getReferenceFieldMap(refName);
278
+ if (!refFieldMap) {
279
+ return undefined;
280
+ }
281
+ const referenceIds = this.getReferenceIds(refFieldMap.localField, entity);
282
+ const refFilter = {
283
+ [refFieldMap.foreignField]: { in: referenceIds }
284
+ };
285
+ return (0, nestjs_query_core_1.mergeFilter)(filter ?? {}, refFilter);
286
+ }
287
+ getReferenceIds(localField, entity) {
288
+ const entities = Array.isArray(entity) ? entity : [entity];
289
+ return entities.flatMap((e) => e[localField]).filter((id) => !!id);
290
+ }
291
+ getReferenceFieldMap(refName) {
198
292
  if (this.isReferencePath(refName)) {
199
- return this.getObjectIdReferenceFilter(refName, entity, filter);
293
+ return {
294
+ foreignField: '_id',
295
+ localField: refName
296
+ };
200
297
  }
201
298
  if (this.isVirtualPath(refName)) {
202
299
  const virtualType = this.Model.schema.virtualpath(refName);
203
- if ((0, mongoose_types_helper_1.isVirtualTypeWithReferenceOptions)(virtualType)) {
204
- return this.getVirtualReferenceFilter(virtualType, entity, filter);
300
+ if (!(0, mongoose_types_helper_1.isVirtualTypeWithReferenceOptions)(virtualType)) {
301
+ throw new Error(`Unable to lookup reference type for ${refName}`);
205
302
  }
206
- throw new Error(`Unable to lookup reference type for ${refName}`);
303
+ return {
304
+ foreignField: virtualType.options.foreignField,
305
+ localField: virtualType.options.localField
306
+ };
207
307
  }
208
308
  return undefined;
209
309
  }
210
- getObjectIdReferenceFilter(refName, entity, filter) {
211
- const referenceIds = entity[refName];
212
- const refFilter = {
213
- _id: { [Array.isArray(referenceIds) ? 'in' : 'eq']: referenceIds }
214
- };
215
- return (0, nestjs_query_core_1.mergeFilter)(filter ?? {}, refFilter);
216
- }
217
- getVirtualReferenceFilter(virtualType, entity, filter) {
218
- const { foreignField, localField } = virtualType.options;
219
- const refVal = entity[localField];
220
- const isArray = Array.isArray(refVal);
221
- const lookupFilter = {
222
- [foreignField]: { [isArray ? 'in' : 'eq']: refVal }
223
- };
224
- return (0, nestjs_query_core_1.mergeFilter)(filter ?? {}, lookupFilter);
225
- }
226
310
  getRefCount(relationName, relationIds, filter) {
227
311
  const referenceModel = this.getReferenceModel(relationName);
228
312
  const referenceQueryBuilder = this.getReferenceQueryBuilder(relationName);
@@ -1 +1 @@
1
- {"version":3,"file":"reference-query.service.js","sourceRoot":"","sources":["../../../../../packages/query-mongoose/src/services/reference-query.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reference-query.service.js","sourceRoot":"","sources":["../../../../../packages/query-mongoose/src/services/reference-query.service.ts"],"names":[],"mappings":"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"}