UNPKG

alphascript-server

Version:

CRUD operations for mongo and other functionalities to get started quickly in any CMS project

47 lines (40 loc) 1.68 kB
var api = require('../../'); module.exports = { redirectToDriver: function(entity, action) { return function(req, res, next) { req.entity = api.entityMap[entity]; req.entityName = entity; req.entityAction = action; if (typeof req.entity === 'undefined') return next("entity not in map: " + entity); if (typeof req.entity.driver === 'undefined') req.entity.driver = "mongo"; var middlewares = typeof req.entity.middleware === 'undefined' ? [] : (req.entity.middleware instanceof Array ? req.entity.middleware : [req.entity.middleware]); runMiddleware(middlewares, req, res, function(err) { if (err) return next(err); switch (req.entity.driver) { case "sql": case "mongo": try { var route = require('./' + req.entity.driver + '/entity'); if (typeof route[action] !== 'function') return next("entity action not implemented " + action + " for driver " + req.entity.driver); return route[action](req, res); } catch (e) { api.error.log(e); return next("an error occurred during entity." + action + " for driver: " + req.entity.driver); } break; default: return next("unknown database driver: " + req.entity.driver); } }); }; } }; function runMiddleware(middlewares, req, res, callback) { if (middlewares.length === 0) return callback(); var middleware = middlewares[0]; middlewares.splice(0, 1); middleware(req, res, function(err) { if (err) return callback(err); runMiddleware(middlewares, req, res, callback); }); }