json-api-nestjs
Version:
JsonApi Plugin for NestJs
37 lines • 1.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.postOne = postOne;
const swagger_1 = require("@nestjs/swagger");
const zod_openapi_1 = require("@anatine/zod-openapi");
const utils_1 = require("../utils");
const zod_1 = require("../../zod");
const factory_1 = require("../../factory");
function postOne(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: `Create item of resource "${entityName}"`,
operationId: `${controller.constructor.name}_${methodName}`,
})(controller, methodName, descriptor);
(0, swagger_1.ApiBody)({
description: `Json api schema for new "${entityName}" item`,
schema: (0, zod_openapi_1.generateSchema)((0, zod_1.zodPost)(primaryColumnType, typeName, fieldWithType, propsDb, primaryColumnName, relationArrayProps, relationPopsName, primaryColumnTypeForRel)),
required: true,
})(controller, methodName, descriptor);
(0, swagger_1.ApiResponse)({
status: 201,
description: `Item of resource "${entityName}" has been created`,
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=post-one.js.map