moleculer-mongobubble
Version:
A Moleculer module for generating CRUD APIs using MongoBubble.
69 lines • 5.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.listArchive = exports.listDrafts = exports.list = void 0;
const bson_1 = require("bson");
const core_1 = require("@mongobubble/core");
const params_1 = require("../utils/params");
exports.list = {
rest: 'GET /',
handler: async (ctx) => {
const repository = await (async () => ctx.service?.getRepository('read'))();
const params = (0, params_1.unmergeAndValidate)(ctx, {
type: 'object',
properties: {
query: {
type: 'object',
properties: {
drafts: { type: 'boolean' },
archived: { type: 'boolean' },
page: { type: 'number' },
limit: { type: 'number' },
},
},
},
});
const statuses = ['PUBLISHED'];
if (params.query?.drafts) {
statuses.push('DRAFT');
}
if (params.query?.archived) {
statuses.push('ARCHIVED');
}
const pipeline = [{
$match: { '_meta.status': { $in: statuses } },
}];
if (params.query?.page || params.query?.limit) {
const page = params.query?.page || 1;
const limit = params.query?.limit || 100;
const skip = (page - 1) * limit;
pipeline.push({ $skip: skip }, { $limit: limit });
}
const results = await repository.list(pipeline);
return bson_1.EJSON.serialize(results);
},
};
exports.listDrafts = {
rest: 'GET /drafts',
handler: async (ctx) => {
const repository = await (async () => ctx.service?.getRepository('read'))();
const errorOrResults = await repository.listDrafts();
if (errorOrResults instanceof core_1.PreventedResult) {
throw new core_1.PreventedResultError(errorOrResults);
}
const results = errorOrResults;
return bson_1.EJSON.serialize(results);
},
};
exports.listArchive = {
rest: 'GET /archive',
handler: async (ctx) => {
const repository = await (async () => ctx.service?.getRepository('read'))();
const errorOrResults = await repository.listArchive();
if (errorOrResults instanceof core_1.PreventedResult) {
throw new core_1.PreventedResultError(errorOrResults);
}
const results = errorOrResults;
return bson_1.EJSON.serialize(results);
},
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb25zL2xpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQXVDO0FBRXZDLDRDQUEwRTtBQUMxRSw0Q0FBcUQ7QUFFeEMsUUFBQSxJQUFJLEdBQUc7SUFDbEIsSUFBSSxFQUFFLE9BQU87SUFDYixPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQXNCLEVBQUUsRUFBRTtRQUN4QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFNUUsTUFBTSxNQUFNLEdBQUcsSUFBQSwyQkFBa0IsRUFBQyxHQUFHLEVBQUU7WUFDckMsSUFBSSxFQUFFLFFBQVE7WUFDZCxVQUFVLEVBQUU7Z0JBQ1YsS0FBSyxFQUFFO29CQUNMLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO3dCQUMzQixRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO3dCQUM3QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO3dCQUN4QixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO3FCQUMxQjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxRQUFRLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUvQixJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDekIsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQzNCLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLENBQUM7Z0JBQ2hCLE1BQU0sRUFBRSxFQUFFLGNBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRTthQUM5QyxDQUFlLENBQUM7UUFFakIsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQzlDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQztZQUNyQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLENBQUM7WUFDekMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2hDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sWUFBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0NBQ08sQ0FBQztBQUVFLFFBQUEsVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxhQUFhO0lBQ25CLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBc0IsRUFBRSxFQUFFO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUU1RSxNQUFNLGNBQWMsR0FBRyxNQUFNLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNyRCxJQUFJLGNBQWMsWUFBWSxzQkFBZSxFQUFFLENBQUM7WUFDOUMsTUFBTSxJQUFJLDJCQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUM7UUFDL0IsT0FBTyxZQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7Q0FDTyxDQUFDO0FBRUUsUUFBQSxXQUFXLEdBQUc7SUFDekIsSUFBSSxFQUFFLGNBQWM7SUFDcEIsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFzQixFQUFFLEVBQUU7UUFDeEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRTVFLE1BQU0sY0FBYyxHQUFHLE1BQU0sVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3RELElBQUksY0FBYyxZQUFZLHNCQUFlLEVBQUUsQ0FBQztZQUM5QyxNQUFNLElBQUksMkJBQW9CLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQztRQUMvQixPQUFPLFlBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNPLENBQUMifQ==