@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
JavaScript
;
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