UNPKG

moleculer-mongobubble

Version:

A Moleculer module for generating CRUD APIs using MongoBubble.

94 lines 6.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const mongobubble_1 = require("mongobubble"); const mongodb_1 = require("mongodb"); const list_1 = require("./actions/list"); const get_1 = require("./actions/get"); const create_1 = require("./actions/create"); const patch_1 = require("./actions/patch"); const replace_1 = require("./actions/replace"); const delete_1 = require("./actions/delete"); const put_1 = require("./actions/put"); const call_override_1 = require("./utils/call-override"); let GLOBAL_CLIENT; function createDbServiceMixin(entityClass, mixinOptions = {}, repositoryOptions = {}) { const mixin = { name: entityClass.COLLECTION, mongobubbleMixinOptions: mixinOptions, entityClass, repository: null, async created() { mixinOptions.reuseGlobalClient = typeof mixinOptions.reuseGlobalClient === 'undefined' ? true : mixinOptions.reuseGlobalClient; mixinOptions.reuseLocalRepository = typeof mixinOptions.reuseLocalRepository === 'undefined' ? true : mixinOptions.reuseLocalRepository; if (mixinOptions.reuseGlobalClient && !GLOBAL_CLIENT) { GLOBAL_CLIENT = await mongodb_1.MongoClient.connect(mixinOptions.uri || 'mongodb://localhost:27017'); } if (mixinOptions.reuseLocalRepository && !this.repository) { this.repository = await this.newReusableRepository(); } }, stopped() { // try { // if (this.repository) { // this.repository.dispose(); // } // if (GLOBAL_CLIENT && GLOBAL_CLIENT.close) { // GLOBAL_CLIENT.close(); // } // } catch (e) { // // this.logger.warn("Unable to stop database connection gracefully.", e); // } }, methods: { async newReusableRepository() { return new mongobubble_1.MongoBubble({ ...repositoryOptions, client: GLOBAL_CLIENT, db: mixinOptions.dbName, autoConnectionSwitch: false, EntityClass: entityClass, }); }, getRepository() { if (mixinOptions.reuseLocalRepository) { return this.repository; } if (mixinOptions.reuseGlobalClient) { return this.newRepository(); } return new mongobubble_1.MongoBubble({ ...repositoryOptions, autoConnectionSwitch: true, }); }, getGlobalClient() { return GLOBAL_CLIENT; }, call: call_override_1.call, }, actions: { list: list_1.list, listDrafts: list_1.listDrafts, listArchive: list_1.listArchive, getById: get_1.getById, insertOne: create_1.insertOne, patchOneByIdRest: patch_1.patchOneByIdRest, patchOneById: patch_1.patchOneById, patchOneRest: patch_1.patchOneRest, patchOne: patch_1.patchOne, replaceOneRest: replace_1.replaceOneRest, replaceOne: replace_1.replaceOne, deleteOne: delete_1.deleteOne, publish: put_1.publish, archive: put_1.archive, unpublish: put_1.unpublish, }, }; return mixin; } exports.default = createDbServiceMixin; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9uZ29CdWJibGVTZXJ2aWNlLm1peGluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL01vbmdvQnViYmxlU2VydmljZS5taXhpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVFBLDZDQUF1RjtBQUN2RixxQ0FBZ0Q7QUFDaEQseUNBQStEO0FBQy9ELHVDQUF3QztBQUN4Qyw2Q0FBNkM7QUFDN0MsMkNBQXlGO0FBQ3pGLCtDQUErRDtBQUMvRCw2Q0FBNkM7QUFDN0MsdUNBQTREO0FBQzVELHlEQUE2QztBQUU3QyxJQUFJLGFBQTBCLENBQUM7QUFzQi9CLFNBQXdCLG9CQUFvQixDQUkxQyxXQUE0QyxFQUM1QyxlQUF3QyxFQUE2QixFQUNyRSxvQkFBb0IsRUFBeUU7SUFFN0YsTUFBTSxLQUFLLEdBQXdDO1FBQ2pELElBQUksRUFBRSxXQUFXLENBQUMsVUFBVTtRQUU1Qix1QkFBdUIsRUFBRSxZQUFZO1FBRXJDLFdBQVc7UUFFWCxVQUFVLEVBQUUsSUFBSTtRQUVoQixLQUFLLENBQUMsT0FBTztZQUNYLFlBQVksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLFlBQVksQ0FBQyxpQkFBaUIsS0FBSyxXQUFXO2dCQUNwRixDQUFDLENBQUMsSUFBSTtnQkFDTixDQUFDLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDO1lBQ25DLFlBQVksQ0FBQyxvQkFBb0IsR0FBRyxPQUFPLFlBQVksQ0FBQyxvQkFBb0IsS0FBSyxXQUFXO2dCQUMxRixDQUFDLENBQUMsSUFBSTtnQkFDTixDQUFDLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDO1lBRXRDLElBQUksWUFBWSxDQUFDLGlCQUFpQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JELGFBQWEsR0FBRyxNQUFNLHFCQUFXLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksMkJBQTJCLENBQUMsQ0FBQztZQUM3RixDQUFDO1lBRUQsSUFBSSxZQUFZLENBQUMsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzFELElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUN2RCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU87WUFDTCxRQUFRO1lBQ1IsMkJBQTJCO1lBQzNCLGlDQUFpQztZQUNqQyxNQUFNO1lBQ04sZ0RBQWdEO1lBQ2hELDZCQUE2QjtZQUM3QixNQUFNO1lBQ04sZ0JBQWdCO1lBQ2hCLDhFQUE4RTtZQUM5RSxJQUFJO1FBQ04sQ0FBQztRQUVELE9BQU8sRUFBRTtZQUNQLEtBQUssQ0FBQyxxQkFBcUI7Z0JBQ3pCLE9BQU8sSUFBSSx5QkFBVyxDQUNwQjtvQkFDRSxHQUFHLGlCQUFpQjtvQkFDcEIsTUFBTSxFQUFFLGFBQWE7b0JBQ3JCLEVBQUUsRUFBRSxZQUFZLENBQUMsTUFBTTtvQkFDdkIsb0JBQW9CLEVBQUUsS0FBSztvQkFDM0IsV0FBVyxFQUFFLFdBQVc7aUJBQ3pCLENBQ0YsQ0FBQztZQUNKLENBQUM7WUFFRCxhQUFhO2dCQUNYLElBQUksWUFBWSxDQUFDLG9CQUFvQixFQUFFLENBQUM7b0JBQ3RDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDekIsQ0FBQztnQkFFRCxJQUFJLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO29CQUNuQyxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDOUIsQ0FBQztnQkFFRCxPQUFPLElBQUkseUJBQVcsQ0FDcEI7b0JBQ0UsR0FBRyxpQkFBaUI7b0JBQ3BCLG9CQUFvQixFQUFFLElBQUk7aUJBQzNCLENBQ0YsQ0FBQztZQUNKLENBQUM7WUFFRCxlQUFlO2dCQUNiLE9BQU8sYUFBYSxDQUFDO1lBQ3ZCLENBQUM7WUFFRCxJQUFJLEVBQUosb0JBQUk7U0FDTDtRQUVELE9BQU8sRUFBRTtZQUNQLElBQUksRUFBSixXQUFJO1lBQ0osVUFBVSxFQUFWLGlCQUFVO1lBQ1YsV0FBVyxFQUFYLGtCQUFXO1lBQ1gsT0FBTyxFQUFQLGFBQU87WUFDUCxTQUFTLEVBQVQsa0JBQVM7WUFDVCxnQkFBZ0IsRUFBaEIsd0JBQWdCO1lBQ2hCLFlBQVksRUFBWixvQkFBWTtZQUNaLFlBQVksRUFBWixvQkFBWTtZQUNaLFFBQVEsRUFBUixnQkFBUTtZQUNSLGNBQWMsRUFBZCx3QkFBYztZQUNkLFVBQVUsRUFBVixvQkFBVTtZQUNWLFNBQVMsRUFBVCxrQkFBUztZQUNULE9BQU8sRUFBUCxhQUFPO1lBQ1AsT0FBTyxFQUFQLGFBQU87WUFDUCxTQUFTLEVBQVQsZUFBUztTQUNWO0tBQ0YsQ0FBQztJQUVGLE9BQU8sS0FBK0IsQ0FBQztBQUN6QyxDQUFDO0FBeEdELHVDQXdHQyJ9