fastify-mongoose-rest
Version:
Rest API generator tools for fastify and mongoose
49 lines • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Modify = void 0;
const utils_1 = require("../utils");
function Modify(basePath, model, options) {
const { tags, validationSchema, findProperty } = options;
let body = { type: 'object' };
let response = {};
if (validationSchema) {
body = {
type: 'object',
properties: {
...validationSchema,
},
};
delete body.properties._id;
response = (0, utils_1.createResponseSchema)(validationSchema, 'object');
}
return {
method: 'PATCH',
url: `${basePath}/:id`,
schema: {
summary: `Modify a existing ${model.modelName} resource`,
tags,
params: {
type: 'object',
properties: {
id: { type: 'string' },
},
},
body,
response,
},
handler: async (request, reply) => {
const query = {
[findProperty || '_id']: request.params.id,
};
let resource = await model.findOne(query).exec();
if (!resource) {
return reply.code(404).send(new Error('Resource not found'));
}
resource = (0, utils_1.updatePropertiesRecursive)(resource, request.body);
await model.updateOne(query, { $set: resource });
return reply.send(resource);
},
};
}
exports.Modify = Modify;
//# sourceMappingURL=modify.js.map