moleculer-mongobubble
Version:
A Moleculer module for generating CRUD APIs using MongoBubble.
134 lines • 11.1 kB
JavaScript
"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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