@ptc-org/nestjs-query-graphql 9.3.0 → 9.4.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ptc-org/nestjs-query-graphql",
3
- "version": "9.3.0",
3
+ "version": "9.4.0",
4
4
  "description": "Nestjs graphql query adapter",
5
5
  "keywords": [
6
6
  "graphql",
@@ -34,7 +34,7 @@
34
34
  "lodash.omit": "^4.5.0",
35
35
  "pluralize": "^8.0.0",
36
36
  "tslib": "^2.8.1",
37
- "@ptc-org/nestjs-query-core": "9.3.0",
37
+ "@ptc-org/nestjs-query-core": "9.4.0",
38
38
  "lodash.merge": "4.6.2",
39
39
  "reflect-metadata": "0.2.2"
40
40
  },
@@ -1,11 +1,11 @@
1
1
  import { Class, QueryService } from '@ptc-org/nestjs-query-core';
2
2
  import { NestjsQueryDataloader } from './relations.loader';
3
3
  export type ReferenceArgs = {
4
- id: string | number;
4
+ [key: string]: string | number;
5
5
  };
6
6
  export declare class ReferenceLoader<DTO> implements NestjsQueryDataloader<DTO, ReferenceArgs, DTO | undefined | Error> {
7
7
  readonly DTOClass: Class<DTO>;
8
8
  private readonly logger;
9
9
  constructor(DTOClass: Class<DTO>);
10
- createLoader(service: QueryService<DTO, unknown, unknown>): (args: ReadonlyArray<ReferenceArgs>) => Promise<(DTO | undefined | Error)[]>;
10
+ createLoader(service: QueryService<DTO, unknown, unknown>, key?: string): (args: ReadonlyArray<ReferenceArgs>) => Promise<(DTO | undefined | Error)[]>;
11
11
  }
@@ -7,32 +7,32 @@ class ReferenceLoader {
7
7
  this.DTOClass = DTOClass;
8
8
  this.logger = new common_1.Logger(ReferenceLoader.name);
9
9
  }
10
- createLoader(service) {
10
+ createLoader(service, key = 'id') {
11
11
  return async (args) => {
12
12
  // Deduplicate IDs while preserving original order mapping
13
- const uniqueIds = [...new Set(args.map((arg) => arg.id))];
13
+ const uniqueIds = [...new Set(args.map((arg) => arg[key]))];
14
14
  try {
15
- const filter = { id: { in: uniqueIds } };
15
+ const filter = { [key]: { in: uniqueIds } };
16
16
  const entities = await service.query({ filter });
17
17
  // Create entity map for efficient lookup
18
18
  // Use string keys because representation.id from federation may differ in type from entity.id
19
19
  const entityMap = new Map();
20
20
  entities?.forEach((entity) => {
21
- const id = entity.id;
21
+ const id = entity[key];
22
22
  entityMap.set(String(id), entity);
23
23
  });
24
24
  // Return results in the same order as requested
25
25
  const results = args.map((arg) => {
26
- const entity = entityMap.get(String(arg.id));
26
+ const entity = entityMap.get(String(arg[key]));
27
27
  if (!entity) {
28
- this.logger.warn(`Entity not found for ID: ${arg.id} in ${this.DTOClass.name}`);
28
+ this.logger.warn(`Entity not found for ${key}: ${arg[key]} in ${this.DTOClass.name}`);
29
29
  }
30
30
  return entity || undefined;
31
31
  });
32
32
  return results;
33
33
  }
34
34
  catch (error) {
35
- this.logger.error(`Batch query failed for ${this.DTOClass.name}:`, error);
35
+ this.logger.error(`Batch query failed for ${this.DTOClass.name} with key ${key}:`, error);
36
36
  // Return error for each request, let DataLoader handle it
37
37
  return args.map(() => (error instanceof Error ? error : new Error(String(error))));
38
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reference.loader.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/loader/reference.loader.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AASvC,MAAa,eAAe;IAG1B,YAAqB,QAAoB;QAApB,aAAQ,GAAR,QAAQ,CAAY;QAFxB,WAAM,GAAG,IAAI,eAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IAEd,CAAC;IAEtC,YAAY,CAAC,OAA4C;QAC9D,OAAO,KAAK,EAAE,IAAkC,EAAwC,EAAE;YACxF,0DAA0D;YAC1D,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAEzD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAA4B,CAAA;gBAClE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;gBAEhD,yCAAyC;gBACzC,8FAA8F;gBAC9F,MAAM,SAAS,GAAG,IAAI,GAAG,EAAe,CAAA;gBACxC,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC3B,MAAM,EAAE,GAAI,MAAkC,CAAC,EAAE,CAAA;oBACjD,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;gBACnC,CAAC,CAAC,CAAA;gBAEF,gDAAgD;gBAChD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC/B,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;oBAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;oBACjF,CAAC;oBACD,OAAO,MAAM,IAAI,SAAS,CAAA;gBAC5B,CAAC,CAAC,CAAA;gBAEF,OAAO,OAAO,CAAA;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAA;gBACzE,0DAA0D;gBAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YACpF,CAAC;QACH,CAAC,CAAA;IACH,CAAC;CACF;AAvCD,0CAuCC"}
1
+ {"version":3,"file":"reference.loader.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/loader/reference.loader.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AASvC,MAAa,eAAe;IAG1B,YAAqB,QAAoB;QAApB,aAAQ,GAAR,QAAQ,CAAY;QAFxB,WAAM,GAAG,IAAI,eAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IAEd,CAAC;IAEtC,YAAY,CAAC,OAA4C,EAAE,GAAG,GAAG,IAAI;QAC1E,OAAO,KAAK,EAAE,IAAkC,EAAwC,EAAE;YACxF,0DAA0D;YAC1D,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YAE3D,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAA4B,CAAA;gBACrE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;gBAEhD,yCAAyC;gBACzC,8FAA8F;gBAC9F,MAAM,SAAS,GAAG,IAAI,GAAG,EAAe,CAAA;gBACxC,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC3B,MAAM,EAAE,GAAI,MAAkC,CAAC,GAAG,CAAC,CAAA;oBACnD,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;gBACnC,CAAC,CAAC,CAAA;gBAEF,gDAAgD;gBAChD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC/B,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;oBAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;oBACvF,CAAC;oBACD,OAAO,MAAM,IAAI,SAAS,CAAA;gBAC5B,CAAC,CAAC,CAAA;gBAEF,OAAO,OAAO,CAAA;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,GAAG,GAAG,EAAE,KAAK,CAAC,CAAA;gBACzF,0DAA0D;gBAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YACpF,CAAC;QACH,CAAC,CAAA;IACH,CAAC;CACF;AAvCD,0CAuCC"}
@@ -37,14 +37,14 @@ const Referenceable = (DTOClass, opts) => (BaseClass) => {
37
37
  // Ensure loader name is unique in Federation scenarios
38
38
  const serviceName = this.service?.constructor?.name || 'UnknownService';
39
39
  const uniqueLoaderName = `${loaderName}_${serviceName}`;
40
- const loader = loader_1.DataLoaderFactory.getOrCreateLoader(context, uniqueLoaderName, () => referenceLoader.createLoader(this.service), {
40
+ const loader = loader_1.DataLoaderFactory.getOrCreateLoader(context, uniqueLoaderName, () => referenceLoader.createLoader(this.service, key), {
41
41
  // Ensure batching is enabled for performance
42
42
  batch: true,
43
43
  cache: true,
44
44
  maxBatchSize: 1000,
45
45
  ...dataLoaderConfig
46
46
  });
47
- const result = await loader.load({ id: id });
47
+ const result = await loader.load({ [key]: id });
48
48
  if (!result) {
49
49
  this.logger.error(`Unable to find ${baseName} with ${key}: ${String(id)}`);
50
50
  throw new common_1.BadRequestException(`Unable to find ${baseName} with ${key}: ${String(id)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"reference.resolver.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/resolvers/reference.resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reference.resolver.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/resolvers/reference.resolver.ts"],"names":[],"mappings":"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"}