UNPKG

forest-express

Version:

Official package for all Forest Express Lianas

69 lines (66 loc) 3.01 kB
"use strict"; var _require = require('@forestadmin/context'), inject = _require.inject; var _ = require('lodash'); var IntegrationInformationsGetter = require('../../services/integration-informations-getter'); var path = require('../../services/path'); var auth = require('../../services/auth'); var ConversationsGetter = require('./services/conversations-getter'); var serializeConversations = require('./serializers/conversations'); var ConversationGetter = require('./services/conversation-getter'); var MessagesGetter = require('./services/messages-getter'); var serializeMessages = require('./serializers/messages'); /* jshint camelcase: false */ module.exports = function Routes(app, model, Implementation, opts) { var _this = this; var _inject = inject(), modelsManager = _inject.modelsManager; var modelName = Implementation.getModelName(model); var integrationInfo; if (opts.integrations && opts.integrations.layer) { integrationInfo = new IntegrationInformationsGetter(modelName, Implementation, opts.integrations.layer).perform(); } if (integrationInfo) { var integrationValues = integrationInfo.split('.'); integrationInfo = { collection: modelsManager.getModels()[integrationValues[0]], field: integrationValues[1] }; } this.conversations = function (req, res, next) { new ConversationsGetter(Implementation, _.extend(req.query, req.params), opts, integrationInfo).perform().then(function (results) { var count = results[0]; var conversations = results[1]; return serializeConversations(conversations, modelName, { count: count }); }).then(function (conversations) { res.send(conversations); })["catch"](next); }; this.conversation = function (req, res, next) { new ConversationGetter(Implementation, _.extend(req.query, req.params), opts, integrationInfo).perform().then(function (conversation) { return serializeConversations(conversation, modelName); }).then(function (conversation) { res.send(conversation); })["catch"](next); }; this.messages = function (req, res, next) { new MessagesGetter(Implementation, _.extend(req.query, req.params), opts, integrationInfo).perform().then(function (results) { var count = results[0]; var messages = results[1]; return serializeMessages(messages, modelName, { count: count }); }).then(function (messages) { res.send(messages); })["catch"](next); }; this.perform = function () { if (integrationInfo) { app.get(path.generate("".concat(modelName, "/:recordId/layer_conversations"), opts), auth.ensureAuthenticated, _this.conversations); app.get(path.generate("".concat(modelName, "_layer_conversations/:conversationId"), opts), auth.ensureAuthenticated, _this.conversation); app.get(path.generate("".concat(modelName, "_layer_conversations/:conversationId/relationships/messages"), opts), auth.ensureAuthenticated, _this.messages); } }; };