UNPKG

moleculer-mongobubble

Version:

A Moleculer module for generating CRUD APIs using MongoBubble.

134 lines 11.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.patchOne = exports.patchOneRest = exports.patchOneById = exports.patchOneByIdRest = void 0; const bson_1 = require("bson"); const params_1 = require("../utils/params"); const ejson_1 = require("../utils/ejson"); exports.patchOneByIdRest = { rest: 'PATCH /:id', handler: async (ctx) => { const id = ctx.service?.parseId(ctx); const params = (0, params_1.unmergeAndValidate)(ctx, { type: 'object', properties: { body: { type: 'object', additionalProperties: true, }, query: { type: 'object', properties: { stopPropagation: { type: 'boolean' }, }, }, }, }, ['id']); const bsonBody = (0, ejson_1.isEJSON)(params.body) ? bson_1.EJSON.deserialize(params.body) : params.body; return ctx.call(`${ctx.service?.fullName}.patchOneById`, { id, patch: bsonBody, stopPropagation: params?.query?.stopPropagation, }, { meta: { eventPrefix: ctx.meta?.eventPrefix, }, }); }, }; exports.patchOneById = { visibility: 'public', params: { patch: { type: 'object' }, }, handler: async (ctx) => { const repository = await (async () => ctx.service?.getRepository('write'))(); const options = { snapshot: {} }; const bsonId = (0, ejson_1.isEJSON)(ctx.params.id) ? bson_1.EJSON.deserialize(ctx.params.id) : ctx.params.id; const bsonPatch = (0, ejson_1.isEJSON)(ctx.params.patch) ? bson_1.EJSON.deserialize(ctx.params.patch) : ctx.params.patch; const result = await repository.patchOne({ _id: bsonId, }, bsonPatch, options); const serialized = bson_1.EJSON.serialize(result); if (ctx.params?.stopPropagation) { return serialized; } const prefix = ctx.meta?.eventPrefix || ''; ctx.broker.emit(`${prefix}${ctx.service?.fullName}.updated`, { id: ctx.params.id, result: serialized, old: options.snapshot, patch: ctx.params.patch, }); return serialized; }, }; exports.patchOneRest = { rest: 'PATCH /', handler: async (ctx) => { const params = ctx.service?.unmergeAndValidate(ctx, { type: 'object', properties: { body: { type: 'object', additionalProperties: true, }, query: { type: 'object', properties: { filter: { type: 'string' }, // upsert: { type: 'boolean' }, stopPropagation: { type: 'boolean' }, }, required: ['filter'], }, }, }, ['id']); const jsonFilter = JSON.parse(params.query?.filter || '{}'); const bsonFilter = (0, ejson_1.isEJSON)(jsonFilter) ? bson_1.EJSON.deserialize(jsonFilter) : jsonFilter; return ctx.call(`${ctx.service?.fullName}.patchOne`, { filter: bsonFilter, upsert: params.query.upsert, patch: params.body, stopPropagation: params?.query?.stopPropagation, }, { meta: { eventPrefix: ctx.meta?.eventPrefix, }, }); }, }; exports.patchOne = { visibility: 'public', params: { filter: { type: 'object' }, // upsert: { type: 'boolean', optional: true }, patch: { type: 'object' }, }, handler: async (ctx) => { const repository = await (async () => ctx.service?.getRepository('write'))(); const snapshot = {}; const options = ctx.params.upsert ? { upsert: true, snapshot } : { snapshot }; const bsonFilter = (0, ejson_1.isEJSON)(ctx.params.filter) ? bson_1.EJSON.deserialize(ctx.params.filter) : ctx.params.filter; const bsonPatch = (0, ejson_1.isEJSON)(ctx.params.patch) ? bson_1.EJSON.deserialize(ctx.params.patch) : ctx.params.patch; const result = await repository.patchOne(bsonFilter, bsonPatch, options); const serialized = bson_1.EJSON.serialize(result); if (ctx?.params?.stopPropagation) { return serialized; } const prefix = ctx.meta?.eventPrefix || ''; ctx.broker.emit(`${prefix}${ctx.service?.fullName}.updated`, { id: ctx.params.id, result: serialized, old: options.snapshot, patch: ctx.params.patch, }); return serialized; }, }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN0aW9ucy9wYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBdUM7QUFFdkMsNENBQXFEO0FBQ3JELDBDQUF5QztBQUc1QixRQUFBLGdCQUFnQixHQUFHO0lBQzlCLElBQUksRUFBRSxZQUFZO0lBQ2xCLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBMkMsRUFBRSxFQUFFO1FBQzdELE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLElBQUEsMkJBQWtCLEVBQUMsR0FBRyxFQUFFO1lBQ3JDLElBQUksRUFBRSxRQUFRO1lBQ2QsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRTtvQkFDSixJQUFJLEVBQUUsUUFBUTtvQkFDZCxvQkFBb0IsRUFBRSxJQUFJO2lCQUMzQjtnQkFDRCxLQUFLLEVBQUU7b0JBQ0wsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNWLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7cUJBQ3JDO2lCQUNGO2FBQ0Y7U0FDRixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVYLE1BQU0sUUFBUSxHQUFHLElBQUEsZUFBTyxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFFckYsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLGVBQWUsRUFBRTtZQUN2RCxFQUFFO1lBQ0YsS0FBSyxFQUFFLFFBQVE7WUFDZixlQUFlLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxlQUFlO1NBQ2hELEVBQUU7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