forest-express
Version:
Official package for all Forest Express Lianas
37 lines (36 loc) • 1.65 kB
JavaScript
;
var _require = require('@forestadmin/context'),
inject = _require.inject;
var _ = require('lodash');
var IntegrationInformationsGetter = require('../../services/integration-informations-getter');
var MixpanelEventsGetter = require('./services/mixpanel-events-getter');
var serializeMixpanelEvents = require('./serializers/mixpanel-events');
var auth = require('../../services/auth');
var path = require('../../services/path');
module.exports = function Routes(app, model, Implementation, options) {
var _this = this;
var _inject = inject(),
modelsManager = _inject.modelsManager;
var modelName = Implementation.getModelName(model);
var integrationInfo;
if (options.integrations && options.integrations.mixpanel) {
integrationInfo = new IntegrationInformationsGetter(modelName, Implementation, options.integrations.mixpanel).perform();
}
if (integrationInfo) {
var integrationValues = integrationInfo.split('.');
integrationInfo = {
collection: modelsManager.getModels()[integrationValues[0]],
field: integrationValues[1]
};
}
this.mixpanelEvents = function (request, response, next) {
new MixpanelEventsGetter(Implementation, _.extend(request.query, request.params), options, integrationInfo).perform().then(function (events) {
return serializeMixpanelEvents(events, modelName, {}, options);
}).then(function (events) {
response.send(events);
})["catch"](next);
};
this.perform = function () {
app.get(path.generate("".concat(modelName, "/:recordId/relationships/mixpanel_last_events"), options), auth.ensureAuthenticated, _this.mixpanelEvents);
};
};