json-api-nestjs
Version:
JsonApi Plugin for NestJs
44 lines • 2.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.patchOne = patchOne;
const swagger_1 = require("@nestjs/swagger");
const zod_openapi_1 = require("@anatine/zod-openapi");
const types_1 = require("../../types");
const utils_1 = require("../utils");
const zod_1 = require("../../zod");
const factory_1 = require("../../factory");
function patchOne(controller, descriptor, entity, mapEntity, methodName) {
const entityName = entity.name;
const { primaryColumnType, typeName, fieldWithType, propsDb, primaryColumnName, relationArrayProps, relationPopsName, primaryColumnTypeForRel, } = (0, factory_1.getParamsForOatchANdPostZod)(mapEntity, entity);
(0, swagger_1.ApiOperation)({
summary: `Update item of resource "${entityName}"`,
operationId: `${controller.constructor.name}_${methodName}`,
})(controller, methodName, descriptor);
(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.ApiBody)({
description: `Json api schema for update "${entityName}" item`,
schema: (0, zod_openapi_1.generateSchema)((0, zod_1.zodPatch)(primaryColumnType, typeName, fieldWithType, propsDb, primaryColumnName, relationArrayProps, relationPopsName, primaryColumnTypeForRel)),
required: true,
})(controller, methodName, descriptor);
(0, swagger_1.ApiResponse)({
status: 200,
description: `Item of resource "${entityName}" has been updated`,
schema: (0, utils_1.jsonSchemaResponse)(entity, mapEntity),
})(controller, methodName, descriptor);
(0, swagger_1.ApiResponse)({
status: 400,
description: 'Wrong body parameters',
schema: utils_1.errorSchema,
})(controller, methodName, descriptor);
(0, swagger_1.ApiResponse)({
status: 422,
description: 'Unprocessable data',
schema: utils_1.errorSchema,
})(controller, methodName, descriptor);
}
//# sourceMappingURL=patch-one.js.map