@ptc-org/nestjs-query-graphql 2.1.0 → 2.2.0-alpha.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 +2 -2
- package/src/decorators/graphql-look-ahead-relations.decorator.d.ts +5 -0
- package/src/decorators/graphql-look-ahead-relations.decorator.js +36 -0
- package/src/decorators/graphql-look-ahead-relations.decorator.js.map +1 -0
- package/src/decorators/graphql-resolve-info.decorator.d.ts +4 -0
- package/src/decorators/graphql-resolve-info.decorator.js +20 -0
- package/src/decorators/graphql-resolve-info.decorator.js.map +1 -0
- package/src/decorators/index.d.ts +2 -0
- package/src/decorators/index.js +2 -0
- package/src/decorators/index.js.map +1 -1
- package/src/decorators/relation.decorator.d.ts +8 -1
- package/src/decorators/relation.decorator.js +2 -1
- package/src/decorators/relation.decorator.js.map +1 -1
- package/src/loader/find-relations.loader.js +2 -2
- package/src/loader/find-relations.loader.js.map +1 -1
- package/src/module.d.ts +1 -1
- package/src/module.js +4 -3
- package/src/module.js.map +1 -1
- package/src/resolvers/read.resolver.d.ts +3 -3
- package/src/resolvers/read.resolver.js +12 -6
- package/src/resolvers/read.resolver.js.map +1 -1
- package/src/resolvers/relations/read-relations.resolver.js +4 -1
- package/src/resolvers/relations/read-relations.resolver.js.map +1 -1
- package/src/resolvers/relations/relations.interface.d.ts +5 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ptc-org/nestjs-query-graphql",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0-alpha.1",
|
|
4
4
|
"description": "Nestjs graphql query adapter",
|
|
5
5
|
"author": "doug-martin <doug@dougamartin.com>",
|
|
6
6
|
"homepage": "https://github.com/tripss/nestjs-query#readme",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"pluralize": "^8.0.0",
|
|
40
40
|
"tslib": "^2.4.0",
|
|
41
41
|
"upper-case-first": "^2.0.2",
|
|
42
|
-
"@ptc-org/nestjs-query-core": "2.
|
|
42
|
+
"@ptc-org/nestjs-query-core": "2.2.0-alpha.1",
|
|
43
43
|
"lodash.merge": "4.6.2",
|
|
44
44
|
"reflect-metadata": "0.1.13"
|
|
45
45
|
},
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GraphQLLookAheadRelations = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const graphql_1 = require("@nestjs/graphql");
|
|
6
|
+
const graphql_resolve_info_utils_1 = require("./graphql-resolve-info.utils");
|
|
7
|
+
const relation_decorator_1 = require("./relation.decorator");
|
|
8
|
+
function createLookAheadInfo(relations, simpleResolveInfo) {
|
|
9
|
+
return relations
|
|
10
|
+
.map((relation) => {
|
|
11
|
+
if (relation.name in simpleResolveInfo.fields) {
|
|
12
|
+
return {
|
|
13
|
+
name: relation.name,
|
|
14
|
+
query: simpleResolveInfo.fields[relation.name].args || {}
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
return false;
|
|
18
|
+
})
|
|
19
|
+
.filter(Boolean);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @internal this implementation is not final and subjected to change! Use at own risk!
|
|
23
|
+
*/
|
|
24
|
+
const GraphQLLookAheadRelations = (DTOClass) => {
|
|
25
|
+
// Get all relations that have look ahead enabled
|
|
26
|
+
const relations = (0, relation_decorator_1.getRelationsDescriptors)(DTOClass).filter((relation) => relation.relationOpts.enableLookAhead && !relation.isMany);
|
|
27
|
+
if (relations.length === 0) {
|
|
28
|
+
return () => [];
|
|
29
|
+
}
|
|
30
|
+
return (0, common_1.createParamDecorator)((data, ctx) => {
|
|
31
|
+
const info = graphql_1.GqlExecutionContext.create(ctx).getInfo();
|
|
32
|
+
return createLookAheadInfo(relations, (0, graphql_resolve_info_utils_1.simplifyResolveInfo)(info));
|
|
33
|
+
})();
|
|
34
|
+
};
|
|
35
|
+
exports.GraphQLLookAheadRelations = GraphQLLookAheadRelations;
|
|
36
|
+
//# sourceMappingURL=graphql-look-ahead-relations.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-look-ahead-relations.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/graphql-look-ahead-relations.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAuE;AACvE,6CAAqD;AAKrD,6EAAoF;AACpF,6DAAkF;AAElF,SAAS,mBAAmB,CAC1B,SAAwC,EACxC,iBAAwC;IAExC,OAAO,SAAS;SACb,GAAG,CAAC,CAAC,QAAQ,EAAiC,EAAE;QAC/C,IAAI,QAAQ,CAAC,IAAI,IAAI,iBAAiB,CAAC,MAAM,EAAE;YAC7C,OAAO;gBACL,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,KAAK,EAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAA2B,CAAC,IAAI,IAAI,EAAE;aACrF,CAAA;SACF;QAED,OAAO,KAAK,CAAA;IACd,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAA0B,CAAA;AAC7C,CAAC;AAED;;GAEG;AACI,MAAM,yBAAyB,GAAG,CAAM,QAAoB,EAAsB,EAAE;IACzF,iDAAiD;IACjD,MAAM,SAAS,GAAG,IAAA,4CAAuB,EAAC,QAAQ,CAAC,CAAC,MAAM,CACxD,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,IAAI,CAAC,QAAQ,CAAC,MAAM,CACxE,CAAA;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1B,OAAO,GAAG,EAAE,CAAC,EAAE,CAAA;KAChB;IAED,OAAO,IAAA,6BAAoB,EAAC,CAAC,IAAa,EAAE,GAAqB,EAAyB,EAAE;QAC1F,MAAM,IAAI,GAAG,6BAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAe,CAAA;QACnE,OAAO,mBAAmB,CAAM,SAAS,EAAE,IAAA,gDAAmB,EAAC,IAAI,CAAC,CAAC,CAAA;IACvE,CAAC,CAAC,EAAE,CAAA;AACN,CAAC,CAAA;AAdY,QAAA,yBAAyB,6BAcrC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GraphQLResolveInfo = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const graphql_1 = require("@nestjs/graphql");
|
|
6
|
+
const graphql_resolve_info_utils_1 = require("./graphql-resolve-info.utils");
|
|
7
|
+
/**
|
|
8
|
+
* @internal this implementation is not final and subjected to change! Use at own risk!
|
|
9
|
+
*/
|
|
10
|
+
function GraphQLResolveInfo(simplify = true) {
|
|
11
|
+
return (0, common_1.createParamDecorator)((data, ctx) => {
|
|
12
|
+
const resolveInfo = graphql_1.GqlExecutionContext.create(ctx).getInfo();
|
|
13
|
+
if (simplify) {
|
|
14
|
+
return (0, graphql_resolve_info_utils_1.simplifyResolveInfo)(resolveInfo);
|
|
15
|
+
}
|
|
16
|
+
return resolveInfo;
|
|
17
|
+
})();
|
|
18
|
+
}
|
|
19
|
+
exports.GraphQLResolveInfo = GraphQLResolveInfo;
|
|
20
|
+
//# sourceMappingURL=graphql-resolve-info.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-resolve-info.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/graphql-resolve-info.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAuE;AACvE,6CAAqD;AAIrD,6EAAoF;AAEpF;;GAEG;AACH,SAAgB,kBAAkB,CAAM,QAAQ,GAAG,IAAI;IACrD,OAAO,IAAA,6BAAoB,EAAC,CAAC,IAAa,EAAE,GAAqB,EAAuC,EAAE;QACxG,MAAM,WAAW,GAAG,6BAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAe,CAAA;QAE1E,IAAI,QAAQ,EAAE;YACZ,OAAO,IAAA,gDAAmB,EAAM,WAAW,CAAC,CAAA;SAC7C;QAED,OAAO,WAAW,CAAA;IACpB,CAAC,CAAC,EAAE,CAAA;AACN,CAAC;AAVD,gDAUC"}
|
|
@@ -3,6 +3,8 @@ export * from './authorize-filter.decorator';
|
|
|
3
3
|
export * from './authorizer.decorator';
|
|
4
4
|
export * from './decorator.utils';
|
|
5
5
|
export { FilterableField, FilterableFieldDescriptor, FilterableFieldOptions, getFilterableFields } from './filterable-field.decorator';
|
|
6
|
+
export * from './graphql-look-ahead-relations.decorator';
|
|
7
|
+
export * from './graphql-resolve-info.decorator';
|
|
6
8
|
export * from './hook.decorator';
|
|
7
9
|
export * from './hook-args.decorator';
|
|
8
10
|
export * from './id-field.decorator';
|
package/src/decorators/index.js
CHANGED
|
@@ -9,6 +9,8 @@ tslib_1.__exportStar(require("./decorator.utils"), exports);
|
|
|
9
9
|
var filterable_field_decorator_1 = require("./filterable-field.decorator");
|
|
10
10
|
Object.defineProperty(exports, "FilterableField", { enumerable: true, get: function () { return filterable_field_decorator_1.FilterableField; } });
|
|
11
11
|
Object.defineProperty(exports, "getFilterableFields", { enumerable: true, get: function () { return filterable_field_decorator_1.getFilterableFields; } });
|
|
12
|
+
tslib_1.__exportStar(require("./graphql-look-ahead-relations.decorator"), exports);
|
|
13
|
+
tslib_1.__exportStar(require("./graphql-resolve-info.decorator"), exports);
|
|
12
14
|
tslib_1.__exportStar(require("./hook.decorator"), exports);
|
|
13
15
|
tslib_1.__exportStar(require("./hook-args.decorator"), exports);
|
|
14
16
|
tslib_1.__exportStar(require("./id-field.decorator"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/index.ts"],"names":[],"mappings":";;;;AAAA,4EAAiD;AACjD,uEAA4C;AAC5C,iEAAsC;AACtC,4DAAiC;AACjC,2EAKqC;AAJnC,6HAAA,eAAe,OAAA;AAGf,iIAAA,mBAAmB,OAAA;AAErB,2DAAgC;AAChC,gEAAqC;AACrC,+DAAoC;AACpC,wEAA6C;AAC7C,+EAAoD;AACpD,uEAAyD;AAAhD,wHAAA,YAAY,OAAA;AACrB,8DAAmC;AACnC,+DAAoC;AACpC,oEAAyC;AACzC,6DAA4F;AAAnF,gHAAA,SAAS,OAAA;AAClB,2DAY6B;AAX3B,sHAAA,gBAAgB,OAAA;AAChB,gIAAA,0BAA0B,OAAA;AAC1B,gIAAA,0BAA0B,OAAA;AAC1B,wHAAA,kBAAkB,OAAA;AAClB,+HAAA,yBAAyB,OAAA;AACzB,kHAAA,YAAY,OAAA;AACZ,sHAAA,gBAAgB,OAAA;AAChB,8GAAA,QAAQ,OAAA;AAGR,qHAAA,eAAe,OAAA;AAEjB,qEAA0C;AAE1C,wEAA6C;AAC7C,qEAA0C;AAC1C,qFAAwG;AAA/F,uIAAA,oBAAoB,OAAA;AAC7B,8DAAmC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/index.ts"],"names":[],"mappings":";;;;AAAA,4EAAiD;AACjD,uEAA4C;AAC5C,iEAAsC;AACtC,4DAAiC;AACjC,2EAKqC;AAJnC,6HAAA,eAAe,OAAA;AAGf,iIAAA,mBAAmB,OAAA;AAErB,mFAAwD;AACxD,2EAAgD;AAChD,2DAAgC;AAChC,gEAAqC;AACrC,+DAAoC;AACpC,wEAA6C;AAC7C,+EAAoD;AACpD,uEAAyD;AAAhD,wHAAA,YAAY,OAAA;AACrB,8DAAmC;AACnC,+DAAoC;AACpC,oEAAyC;AACzC,6DAA4F;AAAnF,gHAAA,SAAS,OAAA;AAClB,2DAY6B;AAX3B,sHAAA,gBAAgB,OAAA;AAChB,gIAAA,0BAA0B,OAAA;AAC1B,gIAAA,0BAA0B,OAAA;AAC1B,wHAAA,kBAAkB,OAAA;AAClB,+HAAA,yBAAyB,OAAA;AACzB,kHAAA,YAAY,OAAA;AACZ,sHAAA,gBAAgB,OAAA;AAChB,8GAAA,QAAQ,OAAA;AAGR,qHAAA,eAAe,OAAA;AAEjB,qEAA0C;AAE1C,wEAA6C;AAC7C,qEAA0C;AAC1C,qFAAwG;AAA/F,uIAAA,oBAAoB,OAAA;AAC7B,8DAAmC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ArrayReflector, Class } from '@ptc-org/nestjs-query-core';
|
|
2
|
-
import { RelationsOpts } from '../resolvers/relations';
|
|
2
|
+
import { RelationsOpts, ResolverRelation } from '../resolvers/relations';
|
|
3
3
|
import { ResolverManyRelation, ResolverOneRelation } from '../resolvers/relations/relations.interface';
|
|
4
4
|
import { BaseResolverOptions } from './resolver-method.decorator';
|
|
5
5
|
export declare const reflector: ArrayReflector;
|
|
@@ -7,6 +7,13 @@ export type RelationOneDecoratorOpts<Relation> = Omit<ResolverOneRelation<Relati
|
|
|
7
7
|
export type RelationManyDecoratorOpts<Relation> = Omit<ResolverManyRelation<Relation>, 'DTO' | 'allowFiltering'>;
|
|
8
8
|
export type RelationTypeFunc<Relation> = () => Class<Relation>;
|
|
9
9
|
export type RelationClassDecorator<DTO> = <Cls extends Class<DTO>>(DTOClass: Cls) => Cls | void;
|
|
10
|
+
export interface RelationDescriptor<Relation> {
|
|
11
|
+
name: string;
|
|
12
|
+
relationTypeFunc: RelationTypeFunc<Relation>;
|
|
13
|
+
isMany: boolean;
|
|
14
|
+
relationOpts?: Omit<ResolverRelation<Relation>, 'DTO'>;
|
|
15
|
+
}
|
|
16
|
+
export declare function getRelationsDescriptors<DTO>(DTOClass: Class<DTO>): RelationDescriptor<unknown>[];
|
|
10
17
|
export declare function getRelations<DTO>(DTOClass: Class<DTO>, opts?: BaseResolverOptions): RelationsOpts;
|
|
11
18
|
export declare const Relation: <DTO, Relation>(name: string, relationTypeFunc: RelationTypeFunc<Relation>, options?: RelationOneDecoratorOpts<Relation>) => RelationClassDecorator<DTO>;
|
|
12
19
|
export declare const FilterableRelation: <DTO, Relation>(name: string, relationTypeFunc: RelationTypeFunc<Relation>, options?: RelationOneDecoratorOpts<Relation>) => RelationClassDecorator<DTO>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FilterableCursorConnection = exports.CursorConnection = exports.FilterableOffsetConnection = exports.OffsetConnection = exports.FilterableUnPagedRelation = exports.UnPagedRelation = exports.FilterableRelation = exports.Relation = exports.getRelations = exports.reflector = void 0;
|
|
3
|
+
exports.FilterableCursorConnection = exports.CursorConnection = exports.FilterableOffsetConnection = exports.OffsetConnection = exports.FilterableUnPagedRelation = exports.UnPagedRelation = exports.FilterableRelation = exports.Relation = exports.getRelations = exports.getRelationsDescriptors = exports.reflector = void 0;
|
|
4
4
|
const nestjs_query_core_1 = require("@ptc-org/nestjs-query-core");
|
|
5
5
|
const common_1 = require("../common");
|
|
6
6
|
const paging_1 = require("../types/query/paging");
|
|
@@ -14,6 +14,7 @@ function getRelationsDescriptors(DTOClass) {
|
|
|
14
14
|
return [...inheritedRelations, ...relations];
|
|
15
15
|
}, []);
|
|
16
16
|
}
|
|
17
|
+
exports.getRelationsDescriptors = getRelationsDescriptors;
|
|
17
18
|
function convertRelationsToOpts(relations, baseOpts) {
|
|
18
19
|
const relationOpts = {};
|
|
19
20
|
relations.forEach((relation) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/relation.decorator.ts"],"names":[],"mappings":";;;AAAA,kEAAqF;AAErF,sCAAiD;AAGjD,kDAAwD;AACxD,2CAA0C;AAG7B,QAAA,SAAS,GAAG,IAAI,kCAAc,CAAC,wBAAY,CAAC,CAAA;AAczD,
|
|
1
|
+
{"version":3,"file":"relation.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/relation.decorator.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,9 +15,9 @@ class FindRelationsLoader {
|
|
|
15
15
|
async loadResults(service, findRelationsMap) {
|
|
16
16
|
const results = [];
|
|
17
17
|
await Promise.all([...findRelationsMap.values()].map(async (args) => {
|
|
18
|
-
const { filter, withDeleted } = args[0];
|
|
18
|
+
const { filter, withDeleted, lookedAhead } = args[0];
|
|
19
19
|
const dtos = args.map((a) => a.dto);
|
|
20
|
-
const opts = { filter, withDeleted };
|
|
20
|
+
const opts = { filter, withDeleted, lookedAhead };
|
|
21
21
|
const relationResults = await service.findRelation(this.RelationDTO, this.relationName, dtos, opts);
|
|
22
22
|
const dtoRelations = dtos.map((dto) => relationResults.get(dto));
|
|
23
23
|
dtoRelations.forEach((relation, index) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-relations.loader.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/loader/find-relations.loader.ts"],"names":[],"mappings":";;;AAQA,MAAa,mBAAmB;IAG9B,YAAqB,WAA4B,EAAW,YAAoB;QAA3D,gBAAW,GAAX,WAAW,CAAiB;QAAW,iBAAY,GAAZ,YAAY,CAAQ;IAAG,CAAC;IAE7E,YAAY,CAAC,OAA4C,EAAE,IAAkC;QAClG,OAAO,KAAK,EAAE,IAAqD,EAA6C,EAAE;YAChH,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAC3C,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC3C,CAAC,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,OAA4C,EAC5C,gBAAiD;QAEjD,MAAM,OAAO,GAA6B,EAAE,CAAA;QAC5C,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAChD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"find-relations.loader.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/loader/find-relations.loader.ts"],"names":[],"mappings":";;;AAQA,MAAa,mBAAmB;IAG9B,YAAqB,WAA4B,EAAW,YAAoB;QAA3D,gBAAW,GAAX,WAAW,CAAiB;QAAW,iBAAY,GAAZ,YAAY,CAAQ;IAAG,CAAC;IAE7E,YAAY,CAAC,OAA4C,EAAE,IAAkC;QAClG,OAAO,KAAK,EAAE,IAAqD,EAA6C,EAAE;YAChH,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAC3C,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC3C,CAAC,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,OAA4C,EAC5C,gBAAiD;QAEjD,MAAM,OAAO,GAA6B,EAAE,CAAA;QAC5C,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAChD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YACpD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YACnC,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,CAAA;YACjD,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACnG,MAAM,YAAY,GAA6B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YAC1F,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;gBACvC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAA;YACvC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CACH,CAAA;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,UAAU,CAChB,SAA0D,EAC1D,IAAkC;QAElC,QAAQ;QACR,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;YAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;gBACxB,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;aACxB;YACD,oEAAoE;YACpE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;YACtD,OAAO,GAAG,CAAA;QACZ,CAAC,EAAE,IAAI,GAAG,EAAoE,CAAC,CAAA;IACjF,CAAC;CACF;AA/CD,kDA+CC"}
|
package/src/module.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ interface DTOModuleOpts<DTO> {
|
|
|
10
10
|
UpdateDTOClass?: Class<DTO>;
|
|
11
11
|
}
|
|
12
12
|
export interface NestjsQueryGraphqlModuleOpts {
|
|
13
|
-
imports
|
|
13
|
+
imports?: Array<Class<any> | DynamicModule | Promise<DynamicModule> | ForwardReference>;
|
|
14
14
|
services?: Provider[];
|
|
15
15
|
assemblers?: Class<Assembler<any, any, any, any, any, any>>[];
|
|
16
16
|
resolvers?: AutoResolverOpts<any, any, unknown, unknown, ReadResolverOpts<any>, PagingStrategies>[];
|
package/src/module.js
CHANGED
|
@@ -8,11 +8,12 @@ class NestjsQueryGraphQLModule {
|
|
|
8
8
|
static forFeature(opts) {
|
|
9
9
|
const coreModule = this.getCoreModule(opts);
|
|
10
10
|
const providers = this.getProviders(opts);
|
|
11
|
+
const imports = opts.imports ?? [];
|
|
11
12
|
return {
|
|
12
13
|
module: NestjsQueryGraphQLModule,
|
|
13
|
-
imports: [...
|
|
14
|
+
imports: [...imports, coreModule],
|
|
14
15
|
providers: [...providers],
|
|
15
|
-
exports: [...providers, ...
|
|
16
|
+
exports: [...providers, ...imports, coreModule]
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
19
|
static defaultPubSubProvider() {
|
|
@@ -21,7 +22,7 @@ class NestjsQueryGraphQLModule {
|
|
|
21
22
|
static getCoreModule(opts) {
|
|
22
23
|
return nestjs_query_core_1.NestjsQueryCoreModule.forFeature({
|
|
23
24
|
assemblers: opts.assemblers,
|
|
24
|
-
imports: opts.imports
|
|
25
|
+
imports: opts.imports ?? []
|
|
25
26
|
});
|
|
26
27
|
}
|
|
27
28
|
static getProviders(opts) {
|
package/src/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../packages/query-graphql/src/module.ts"],"names":[],"mappings":";;;AACA,kEAAoF;AAEpF,2CAA+G;AAE/G,iDAA0E;AAqB1E,MAAa,wBAAwB;
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../packages/query-graphql/src/module.ts"],"names":[],"mappings":";;;AACA,kEAAoF;AAEpF,2CAA+G;AAE/G,iDAA0E;AAqB1E,MAAa,wBAAwB;IAC5B,MAAM,CAAC,UAAU,CAAC,IAAkC;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAA;QAElC,OAAO;YACL,MAAM,EAAE,wBAAwB;YAChC,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,UAAU,CAAC;YACjC,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC;YACzB,OAAO,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,OAAO,EAAE,UAAU,CAAC;SAChD,CAAA;IACH,CAAC;IAEM,MAAM,CAAC,qBAAqB;QACjC,OAAO,EAAE,OAAO,EAAE,IAAA,0BAAW,GAAE,EAAE,QAAQ,EAAE,IAAA,4BAAa,GAAE,EAAE,CAAA;IAC9D,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,IAAkC;QAC7D,OAAO,yCAAqB,CAAC,UAAU,CAAC;YACtC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;SAC5B,CAAC,CAAA;IACJ,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,IAAkC;QAC5D,OAAO;YACL,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAClC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAChC,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;YACpC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAC9B,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;SACnC,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,IAAkC;QAClE,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAA;IACtD,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,IAAkC;QACpE,OAAO,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAA;IAC5B,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,IAAkC;QACpE,OAAO,IAAA,2BAAe,EAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;IAC9C,CAAC;IAEO,MAAM,CAAC,sBAAsB,CAAC,IAAkC;QACtE,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QACpD,OAAO,IAAA,qCAAyB,EAAC,CAAC,GAAG,YAAY,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA;IAC9D,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,IAAkC;QAChE,OAAO,IAAA,+BAAmB,EAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAC/E,CAAC;CACF;AAxDD,4DAwDC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Class, Filter, QueryService } from '@ptc-org/nestjs-query-core';
|
|
1
|
+
import { Class, Filter, QueryService, SelectRelation } from '@ptc-org/nestjs-query-core';
|
|
2
2
|
import { ConnectionOptions, FindOneArgsType, InferConnectionTypeFromStrategy, PagingStrategies, QueryArgsTypeOpts } from '../types';
|
|
3
3
|
import { CursorQueryArgsTypeOpts, QueryType, StaticQueryType } from '../types/query';
|
|
4
4
|
import { ExtractPagingStrategy, ResolverClass, ResolverOpts, ServiceResolver } from './resolver.interface';
|
|
@@ -7,8 +7,8 @@ export type ReadResolverOpts<DTO> = {
|
|
|
7
7
|
QueryArgs?: StaticQueryType<DTO, PagingStrategies>;
|
|
8
8
|
} & ResolverOpts & QueryArgsTypeOpts<DTO> & Pick<ConnectionOptions, 'enableTotalCount'>;
|
|
9
9
|
export interface ReadResolver<DTO, PS extends PagingStrategies, QS extends QueryService<DTO, unknown, unknown>> extends ServiceResolver<DTO, QS> {
|
|
10
|
-
queryMany(query: QueryType<DTO, PagingStrategies>, authorizeFilter?: Filter<DTO>): Promise<InferConnectionTypeFromStrategy<DTO, PS>>;
|
|
11
|
-
findById(id: FindOneArgsType, authorizeFilter?: Filter<DTO>): Promise<DTO | undefined>;
|
|
10
|
+
queryMany(query: QueryType<DTO, PagingStrategies>, authorizeFilter?: Filter<DTO>, selectRelations?: SelectRelation<DTO>[]): Promise<InferConnectionTypeFromStrategy<DTO, PS>>;
|
|
11
|
+
findById(id: FindOneArgsType, authorizeFilter?: Filter<DTO>, selectRelations?: SelectRelation<DTO>[]): Promise<DTO | undefined>;
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
14
|
* @internal
|
|
@@ -34,11 +34,15 @@ const Readable = (DTOClass, opts) => (BaseClass) => {
|
|
|
34
34
|
(0, graphql_1.ArgsType)()
|
|
35
35
|
], FO);
|
|
36
36
|
let ReadResolverBase = class ReadResolverBase extends BaseClass {
|
|
37
|
-
async findById(input, authorizeFilter) {
|
|
38
|
-
return this.service.getById(input.id, {
|
|
37
|
+
async findById(input, authorizeFilter, relations) {
|
|
38
|
+
return this.service.getById(input.id, {
|
|
39
|
+
filter: authorizeFilter,
|
|
40
|
+
withDeleted: opts?.one?.withDeleted,
|
|
41
|
+
relations
|
|
42
|
+
});
|
|
39
43
|
}
|
|
40
|
-
async queryMany(query, authorizeFilter) {
|
|
41
|
-
return ConnectionType.createFromPromise((q) => this.service.query(q), (0, nestjs_query_core_1.mergeQuery)(query, { filter: authorizeFilter }), (filter) => this.service.count(filter));
|
|
44
|
+
async queryMany(query, authorizeFilter, relations) {
|
|
45
|
+
return ConnectionType.createFromPromise((q) => this.service.query(q), (0, nestjs_query_core_1.mergeQuery)(query, { filter: authorizeFilter, relations }), (filter) => this.service.count(filter));
|
|
42
46
|
}
|
|
43
47
|
};
|
|
44
48
|
tslib_1.__decorate([
|
|
@@ -48,8 +52,9 @@ const Readable = (DTOClass, opts) => (BaseClass) => {
|
|
|
48
52
|
operationGroup: auth_1.OperationGroup.READ,
|
|
49
53
|
many: false
|
|
50
54
|
})),
|
|
55
|
+
tslib_1.__param(2, (0, decorators_1.GraphQLLookAheadRelations)(DTOClass)),
|
|
51
56
|
tslib_1.__metadata("design:type", Function),
|
|
52
|
-
tslib_1.__metadata("design:paramtypes", [FO, Object]),
|
|
57
|
+
tslib_1.__metadata("design:paramtypes", [FO, Object, Array]),
|
|
53
58
|
tslib_1.__metadata("design:returntype", Promise)
|
|
54
59
|
], ReadResolverBase.prototype, "findById", null);
|
|
55
60
|
tslib_1.__decorate([
|
|
@@ -59,8 +64,9 @@ const Readable = (DTOClass, opts) => (BaseClass) => {
|
|
|
59
64
|
operationGroup: auth_1.OperationGroup.READ,
|
|
60
65
|
many: true
|
|
61
66
|
})),
|
|
67
|
+
tslib_1.__param(2, (0, decorators_1.GraphQLLookAheadRelations)(DTOClass)),
|
|
62
68
|
tslib_1.__metadata("design:type", Function),
|
|
63
|
-
tslib_1.__metadata("design:paramtypes", [QA, Object]),
|
|
69
|
+
tslib_1.__metadata("design:paramtypes", [QA, Object, Array]),
|
|
64
70
|
tslib_1.__metadata("design:returntype", Promise)
|
|
65
71
|
], ReadResolverBase.prototype, "queryMany", null);
|
|
66
72
|
ReadResolverBase = tslib_1.__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.resolver.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/resolvers/read.resolver.ts"],"names":[],"mappings":";;;;AAAA,6CAAoD;AACpD,
|
|
1
|
+
{"version":3,"file":"read.resolver.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/resolvers/read.resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,10 @@ const ReadOneRelationMixin = (DTOClass, relation) => (Base) => {
|
|
|
26
26
|
const findLoader = new loader_1.FindRelationsLoader(relationDTO, relationName);
|
|
27
27
|
let ReadOneMixin = class ReadOneMixin extends Base {
|
|
28
28
|
async [_a = `find${baseName}`](dto, context, authFilter) {
|
|
29
|
-
return loader_1.DataLoaderFactory.getOrCreateLoader(context, loaderName, findLoader.createLoader(this.service, {
|
|
29
|
+
return loader_1.DataLoaderFactory.getOrCreateLoader(context, loaderName, findLoader.createLoader(this.service, {
|
|
30
|
+
withDeleted: relation.withDeleted,
|
|
31
|
+
lookedAhead: relation.enableLookAhead
|
|
32
|
+
})).load({
|
|
30
33
|
dto,
|
|
31
34
|
filter: authFilter
|
|
32
35
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-relations.resolver.js","sourceRoot":"","sources":["../../../../../../packages/query-graphql/src/resolvers/relations/read-relations.resolver.ts"],"names":[],"mappings":";;;;AACA,6CAA2E;AAC3E,kEAAoF;AAEpF,qCAA2C;AAC3C,yCAA0C;AAC1C,iDAA0E;AAC1E,qDAA0D;AAC1D,yCAAiH;AACjH,uCAA2C;AAC3C,wCAAiD;AACjD,8DAA4E;AAC5E,uCAAgE;AAOhE,MAAM,oBAAoB,GACxB,CAAgB,QAAoB,EAAE,QAAoC,EAAE,EAAE,CAC9E,CAA6E,IAAO,EAAK,EAAE;;IACzF,IAAI,QAAQ,CAAC,WAAW,EAAE;QACxB,OAAO,IAAI,CAAA;KACZ;IACD,MAAM,kBAAkB,GAAG,IAAA,4BAAkB,EAAC,QAAQ,CAAC,CAAA;IACvD,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAA;IAChC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,IAAA,oBAAW,EAAC,WAAW,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IAC3F,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,IAAI,aAAa,CAAA;IAC3D,MAAM,UAAU,GAAG,OAAO,QAAQ,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IACvD,MAAM,UAAU,GAAG,IAAI,4BAAmB,CAAgB,WAAW,EAAE,YAAY,CAAC,CAAA;IAGpF,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,IAAI;QAQvB,AAAN,KAAK,CAAC,MAAC,OAAO,QAAQ,EAAE,CAAC,CACb,GAAQ,EACP,OAAyB,EAKpC,UAA6B;YAE7B,OAAO,0BAAiB,CAAC,iBAAiB,CACxC,OAAO,EACP,UAAU,EACV,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"read-relations.resolver.js","sourceRoot":"","sources":["../../../../../../packages/query-graphql/src/resolvers/relations/read-relations.resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,6 +51,10 @@ export type ResolverRelation<Relation> = {
|
|
|
51
51
|
* Enable aggregation queries.
|
|
52
52
|
*/
|
|
53
53
|
enableAggregate?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Enable look ahead mode, will join and select the relation when queried.
|
|
56
|
+
*/
|
|
57
|
+
enableLookAhead?: boolean;
|
|
54
58
|
/**
|
|
55
59
|
* Indicates if soft-deleted rows should be included in relation result.
|
|
56
60
|
*/
|
|
@@ -70,7 +74,7 @@ export type ResolverRelation<Relation> = {
|
|
|
70
74
|
} & DTONamesOpts & ResolverMethodOpts & QueryArgsTypeOpts<Relation> & Pick<ConnectionOptions, 'enableTotalCount'>;
|
|
71
75
|
export type RelationTypeMap<RT> = Record<string, RT>;
|
|
72
76
|
export type ResolverOneRelation<Relation> = Omit<ResolverRelation<Relation>, 'disableFilter' | 'disableSort'>;
|
|
73
|
-
export type ResolverManyRelation<Relation> = ResolverRelation<Relation>;
|
|
77
|
+
export type ResolverManyRelation<Relation> = Omit<ResolverRelation<Relation>, 'enableLookAhead'>;
|
|
74
78
|
export type RelationsOpts<Relation = unknown> = {
|
|
75
79
|
/**
|
|
76
80
|
* All relations that are a single record
|