moleculer-mongobubble
Version:
A Moleculer module for generating CRUD APIs using MongoBubble.
64 lines • 4.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.replaceOne = exports.replaceOneRest = void 0;
const bson_1 = require("bson");
const params_1 = require("../utils/params");
const ejson_1 = require("../utils/ejson");
exports.replaceOneRest = {
rest: 'PUT /',
handler: async (ctx) => {
const params = (0, params_1.unmergeAndValidate)(ctx, {
type: 'object',
properties: {
body: {
type: 'object',
additionalProperties: true,
},
query: {
type: 'object',
properties: {
upsert: { type: 'boolean' },
stopPropagation: { type: 'boolean' },
},
},
},
});
const prefix = ctx.meta?.eventPrefix || '';
return ctx.call(`${prefix}${ctx.service?.fullName}.replaceOne`, {
document: params.body,
upsert: params.query.upsert,
stopPropagation: params?.query?.stopPropagation,
});
},
};
exports.replaceOne = {
visibility: 'public',
handler: async (ctx) => {
const repository = await (async () => ctx.service?.getRepository('write'))();
const options = { snapshot: {}, upsert: null };
if (ctx.params?.upsert) {
options.upsert = true;
}
else {
Reflect.deleteProperty(options, 'upsert');
}
const document = (0, ejson_1.isEJSON)(ctx.params.document)
? bson_1.EJSON.deserialize(ctx.params.document)
: ctx.params.document;
const result = await repository.replaceOne(document, 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,
document,
upsert: ctx.params.upsert,
});
return serialized;
},
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb25zL3JlcGxhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQXVDO0FBRXZDLDRDQUFxRDtBQUNyRCwwQ0FBeUM7QUFHNUIsUUFBQSxjQUFjLEdBQUc7SUFDNUIsSUFBSSxFQUFFLE9BQU87SUFDYixPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQTJDLEVBQUUsRUFBRTtRQUM3RCxNQUFNLE1BQU0sR0FBRyxJQUFBLDJCQUFrQixFQUFDLEdBQUcsRUFBRTtZQUNyQyxJQUFJLEVBQUUsUUFBUTtZQUNkLFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUU7b0JBQ0osSUFBSSxFQUFFLFFBQVE7b0JBQ2Qsb0JBQW9CLEVBQUUsSUFBSTtpQkFDM0I7Z0JBQ0QsS0FBSyxFQUFFO29CQUNMLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO3dCQUMzQixlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO3FCQUNyQztpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDO1FBQzNDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsYUFBYSxFQUFFO1lBQzlELFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNyQixNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQzNCLGVBQWUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGVBQWU7U0FDaEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGLENBQUM7QUFFVyxRQUFBLFVBQVUsR0FBRztJQUN4QixVQUFVLEVBQUUsUUFBNEI7SUFDeEMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUEyQyxFQUFFLEVBQUU7UUFDN0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRTdFLE1BQU0sT0FBTyxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDL0MsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLElBQUEsZUFBTyxFQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1lBQzNDLENBQUMsQ0FBQyxZQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUV4QixNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzlELE1BQU0sVUFBVSxHQUFHLFlBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFM0MsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLGVBQWUsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDM0MsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLFVBQVUsRUFBRTtZQUMzRCxFQUFFLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2pCLE1BQU0sRUFBRSxVQUFVO1lBQ2xCLEdBQUcsRUFBRSxPQUFPLENBQUMsUUFBUTtZQUNyQixRQUFRO1lBQ1IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTTtTQUMxQixDQUFDLENBQUM7UUFFSCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0NBQ0YsQ0FBQyJ9