json-api-nestjs
Version:
JsonApi Plugin for NestJs
55 lines • 2.33 kB
JavaScript
;
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