UNPKG

@eleven-am/nestjs-graphql-crud

Version:

nestjs-graphql-crud is a library that aims to reduce the boilerplate code needed to create a GraphQL CRUD API.

111 lines 5.6 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createCustomResolver = createCustomResolver; const graphql_1 = require("@nestjs/graphql"); const authorizer_1 = require("@eleven-am/authorizer"); const decorators_1 = require("./decorators"); function createCustomResolver(item, modelName, FactoryClass, config, ParentClass) { var _a, _b, _c; let Class; if (config.isMutation) { let CustomResolverImpl = class CustomResolverImpl extends ParentClass { async [_a = config.name](info, ability, args) { const select = this.service.fieldSelectionProvider.parseSelection(info); const factory = this.service.getFactory(FactoryClass); // @ts-ignore return factory[config.methodName](args, ability, select); } }; __decorate([ (0, graphql_1.Mutation)(config.outputType, { description: config.description, nullable: config.nullable, }), (0, authorizer_1.CanPerform)(...config.permissions), __param(0, (0, graphql_1.Info)()), __param(1, decorators_1.CurrentAbility.HTTP()), __param(2, (0, graphql_1.Args)('args', { type: () => config.inputType })), __metadata("design:type", Function), __metadata("design:paramtypes", [Object, Object, Object]), __metadata("design:returntype", Promise) ], CustomResolverImpl.prototype, _a, null); CustomResolverImpl = __decorate([ (0, graphql_1.Resolver)(() => item) ], CustomResolverImpl); Class = CustomResolverImpl; } else if (config.resolveField) { let CustomResolverImpl = class CustomResolverImpl extends ParentClass { async [_b = config.name](item, info, ability, where) { const select = this.service.fieldSelectionProvider.parseSelection(info); const factory = this.service.getFactory(FactoryClass); // @ts-ignore return factory[config.methodName](where, ability, item, select); } }; __decorate([ (0, graphql_1.ResolveField)(config.resolveField, config.outputType, { description: config.description, nullable: config.nullable, }), (0, authorizer_1.CanPerform)(...config.permissions), __param(0, (0, graphql_1.Parent)()), __param(1, (0, graphql_1.Info)()), __param(2, decorators_1.CurrentAbility.HTTP()), __param(3, (0, graphql_1.Args)('args', { type: () => config.inputType, nullable: config.nullable })), __metadata("design:type", Function), __metadata("design:paramtypes", [Object, Object, Object, Object]), __metadata("design:returntype", Promise) ], CustomResolverImpl.prototype, _b, null); CustomResolverImpl = __decorate([ (0, graphql_1.Resolver)(() => item) ], CustomResolverImpl); Class = CustomResolverImpl; } else { let CustomResolverImpl = class CustomResolverImpl extends ParentClass { async [_c = config.name](info, ability, where) { const select = this.service.fieldSelectionProvider.parseSelection(info); const factory = this.service.getFactory(FactoryClass); // @ts-ignore return factory[config.methodName](where, ability, select); } }; __decorate([ (0, graphql_1.Query)(config.outputType, { name: config.name, nullable: config.nullable, }), (0, authorizer_1.CanPerform)(...config.permissions), __param(0, (0, graphql_1.Info)()), __param(1, decorators_1.CurrentAbility.HTTP()), __param(2, (0, graphql_1.Args)('args', { type: () => config.inputType, nullable: config.nullable })), __metadata("design:type", Function), __metadata("design:paramtypes", [Object, Object, Object]), __metadata("design:returntype", Promise) ], CustomResolverImpl.prototype, _c, null); CustomResolverImpl = __decorate([ (0, graphql_1.Resolver)(() => item) ], CustomResolverImpl); Class = CustomResolverImpl; } const name = `${(0, decorators_1.firstLetterUppercase)(modelName)}${(0, decorators_1.firstLetterUppercase)(config.name)}Resolver`; Object.defineProperty(Class, 'name', { value: name, writable: false, }); return Class; } //# sourceMappingURL=createCustomResolver.js.map