UNPKG

2.25 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.Mutation = void 0;
4const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
5require("reflect-metadata");
6const resolver_enum_1 = require("../enums/resolver.enum");
7const undefined_return_type_error_1 = require("../schema-builder/errors/undefined-return-type.error");
8const lazy_metadata_storage_1 = require("../schema-builder/storages/lazy-metadata.storage");
9const type_metadata_storage_1 = require("../schema-builder/storages/type-metadata.storage");
10const reflection_utilts_1 = require("../utils/reflection.utilts");
11const resolvers_utils_1 = require("./resolvers.utils");
12/**
13 * Mutation handler (method) Decorator. Routes specified mutation to this method.
14 */
15function Mutation(nameOrType, options = {}) {
16 return (target, key, descriptor) => {
17 const name = (0, shared_utils_1.isString)(nameOrType)
18 ? nameOrType
19 : (options && options.name) || undefined;
20 (0, resolvers_utils_1.addResolverMetadata)(resolver_enum_1.Resolver.MUTATION, name, target, key, descriptor);
21 lazy_metadata_storage_1.LazyMetadataStorage.store(target.constructor, () => {
22 if (!nameOrType || (0, shared_utils_1.isString)(nameOrType)) {
23 throw new undefined_return_type_error_1.UndefinedReturnTypeError(Mutation.name, key);
24 }
25 const { typeFn, options: typeOptions } = (0, reflection_utilts_1.reflectTypeFromMetadata)({
26 metadataKey: 'design:returntype',
27 prototype: target,
28 propertyKey: key,
29 explicitTypeFn: nameOrType,
30 typeOptions: options,
31 });
32 const metadata = {
33 methodName: key,
34 schemaName: options.name || key,
35 target: target.constructor,
36 typeFn,
37 returnTypeOptions: typeOptions,
38 description: options.description,
39 deprecationReason: options.deprecationReason,
40 complexity: options.complexity,
41 };
42 type_metadata_storage_1.TypeMetadataStorage.addMutationMetadata(metadata);
43 });
44 };
45}
46exports.Mutation = Mutation;