UNPKG

json-api-nestjs

Version:
55 lines 2.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.postRelationship = postRelationship; const zod_openapi_1 = require("@anatine/zod-openapi"); const swagger_1 = require("@nestjs/swagger"); const utils_1 = require("../utils"); const zod_1 = require("../../zod"); const types_1 = require("../../types"); function postRelationship(controller, descriptor, entity, mapEntity, methodName) { const entityName = entity.name; const { relations, primaryColumnType } = (0, utils_1.getEntityMapProps)(mapEntity, entity); (0, swagger_1.ApiParam)({ name: 'id', required: true, type: primaryColumnType === types_1.TypeField.number ? 'integer' : 'string', description: `ID of resource "${entityName}"`, })(controller, methodName, descriptor); (0, swagger_1.ApiParam)({ name: 'relName', required: true, type: 'string', enum: relations, description: `Relation name of resource "${entityName}"`, })(controller, methodName, descriptor); (0, swagger_1.ApiBody)({ description: `Json api schema for update "${entityName}" item`, schema: (0, zod_openapi_1.generateSchema)(zod_1.zodPatchRelationship), required: true, })(controller, methodName, descriptor); (0, swagger_1.ApiOperation)({ summary: `Create list of relation for resource "${entityName}"`, operationId: `${controller.constructor.name}_${methodName}`, })(controller, methodName, descriptor); (0, swagger_1.ApiResponse)({ status: 200, schema: utils_1.schemaTypeForRelation, description: `Item/s of relation for "${entityName}" has been created`, })(controller, methodName, descriptor); (0, swagger_1.ApiResponse)({ status: 400, description: 'Wrong url parameters', schema: utils_1.errorSchema, })(controller, methodName, descriptor); (0, swagger_1.ApiResponse)({ status: 422, description: 'Incorrect type for relation', schema: utils_1.errorSchema, })(controller, methodName, descriptor); (0, swagger_1.ApiResponse)({ status: 404, description: 'Resource not found ', schema: utils_1.errorSchema, })(controller, methodName, descriptor); } //# sourceMappingURL=post-relationship.js.map