moleculer-mongobubble
Version:
A Moleculer module for generating CRUD APIs using MongoBubble.
40 lines • 3.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.insertOne = void 0;
const bson_1 = require("bson");
const params_1 = require("../utils/params");
const ejson_1 = require("../utils/ejson");
exports.insertOne = {
rest: 'POST /',
handler: async (ctx) => {
const repository = await (async () => ctx.service?.getRepository('write'))();
const params = (0, params_1.unmergeAndValidate)(ctx, {
type: 'object',
// TODO: get schema from entity class
properties: {
body: {
type: 'object',
additionalProperties: true,
},
query: {
type: 'object',
properties: {
stopPropagation: { type: 'boolean' },
},
},
},
});
// TODO: replicate this logic in all actions
// prevents EJSON from converting BSON to JSON (ie. ObjectId to string) instead EJSON to BSON
const deserializedBody = (0, ejson_1.isEJSON)(params.body) ? bson_1.EJSON.deserialize(params.body) : params.body;
const result = await repository.insertOne(deserializedBody);
const serialized = bson_1.EJSON.serialize(result);
if (params?.query?.stopPropagation) {
return serialized;
}
const prefix = ctx.meta?.eventPrefix || '';
ctx.broker.emit(`${prefix}${ctx.service?.fullName}.created`, serialized);
return serialized;
},
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FjdGlvbnMvY3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUF1QztBQUV2Qyw0Q0FBcUQ7QUFDckQsMENBQXlDO0FBRzVCLFFBQUEsU0FBUyxHQUFHO0lBQ3ZCLElBQUksRUFBRSxRQUFRO0lBQ2QsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUEyQyxFQUFFLEVBQUU7UUFDN0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRTdFLE1BQU0sTUFBTSxHQUFHLElBQUEsMkJBQWtCLEVBQUMsR0FBRyxFQUFFO1lBQ3JDLElBQUksRUFBRSxRQUFRO1lBQ2QscUNBQXFDO1lBQ3JDLFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUU7b0JBQ0osSUFBSSxFQUFFLFFBQVE7b0JBQ2Qsb0JBQW9CLEVBQUUsSUFBSTtpQkFDM0I7Z0JBQ0QsS0FBSyxFQUFFO29CQUNMLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO3FCQUNyQztpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsNENBQTRDO1FBQzVDLDZGQUE2RjtRQUM3RixNQUFNLGdCQUFnQixHQUFHLElBQUEsZUFBTyxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFFN0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUQsTUFBTSxVQUFVLEdBQUcsWUFBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUzQyxJQUFJLE1BQU0sRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLENBQUM7WUFDbkMsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxJQUFJLEVBQUUsQ0FBQztRQUMzQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXpFLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Q0FDTyxDQUFDIn0=