UNPKG

clannad

Version:

data storage service with RESTful APIs.

288 lines (240 loc) 9.29 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties'); var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _resterror = require('../services/resterror'); var _resterror2 = _interopRequireDefault(_resterror); var _tools = require('../services/tools'); var _model = require('../services/model'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var getSelectStr = function getSelectStr(name, auth, selectArr) { if (selectArr) selectArr = JSON.parse(selectArr); var select = []; var shows = (0, _model.getShows)(name); if (!auth) throw new _resterror2.default(404, 'AUTH_NOTFOUND_ERR', 'auth is not found'); if (!shows) throw new _resterror2.default(404, 'SHOWS_NOTFOUND_ERR', 'shows ' + shows + ' is not found'); for (var _name in shows) { if (selectArr && selectArr.indexOf(_name) === -1) select.push('-' + _name);else if (!shows[_name][auth]) select.push('-' + _name); } select = select.join(' '); return select + ' -__v'; }; exports.default = { add: function add(ctx) { var _this = this; return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee() { var _ctx$req, Model, data, models, model; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _ctx$req = ctx.req; Model = _ctx$req.model; data = _ctx$req.body; if (!Array.isArray(data)) { _context.next = 13; break; } if (data.length) { _context.next = 6; break; } throw new _resterror2.default(400, 'SOURCE_EMPTY_ERR', 'source array is empty'); case 6: data = data.map(function (item) { return (0, _tools.parseNull)(item); }); _context.next = 9; return Model.insertMany(data); case 9: models = _context.sent; ctx.body = models.map(function (model) { return { id: model._id }; }); _context.next = 17; break; case 13: model = new Model((0, _tools.parseNull)(data)); _context.next = 16; return model.save(); case 16: ctx.body = { id: model._id }; case 17: case 'end': return _context.stop(); } } }, _callee, _this); }))(); }, del: function del(ctx) { var _this2 = this; return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2() { var Model, params; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: Model = ctx.req.model; params = ctx.query.params; _context2.next = 4; return Model.remove(params ? JSON.parse(params) : {}); case 4: case 'end': return _context2.stop(); } } }, _callee2, _this2); }))(); }, edit: function edit(ctx) { var _this3 = this; return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3() { var _ctx$req2, Model, data, params; return _regenerator2.default.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: _ctx$req2 = ctx.req; Model = _ctx$req2.model; data = _ctx$req2.body; params = ctx.query.params; _context3.next = 6; return Model.update(params ? JSON.parse(params) : {}, (0, _tools.parseNull)(data), { multi: true }); case 6: case 'end': return _context3.stop(); } } }, _callee3, _this3); }))(); }, list: function list(ctx) { var _this4 = this; return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee4() { var Model, _ctx$query, select, query, _ctx$params, projectName, tableName; return _regenerator2.default.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: Model = ctx.req.model; _ctx$query = ctx.query; select = _ctx$query.select; query = (0, _objectWithoutProperties3.default)(_ctx$query, ['select']); _ctx$params = ctx.params; projectName = _ctx$params.projectName; tableName = _ctx$params.tableName; select = getSelectStr(projectName + '.' + tableName, ctx.req.auth, select); _context4.next = 10; return (0, _tools.getList)({ model: Model, select: select, query: query }); case 10: ctx.body = _context4.sent; case 11: case 'end': return _context4.stop(); } } }, _callee4, _this4); }))(); }, count: function count(ctx) { var _this5 = this; return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee5() { var Model, params, count; return _regenerator2.default.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: Model = ctx.req.model; params = ctx.query.params; _context5.next = 4; return Model.count(params ? JSON.parse(params) : ctx.query); case 4: count = _context5.sent; ctx.body = { count: count }; case 6: case 'end': return _context5.stop(); } } }, _callee5, _this5); }))(); }, detail: function detail(ctx) { var _this6 = this; return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee6() { var Model, _ctx$params2, projectName, tableName, _ctx$query2, params, select, populate, source; return _regenerator2.default.wrap(function _callee6$(_context6) { while (1) { switch (_context6.prev = _context6.next) { case 0: Model = ctx.req.model; _ctx$params2 = ctx.params; projectName = _ctx$params2.projectName; tableName = _ctx$params2.tableName; _ctx$query2 = ctx.query; params = _ctx$query2.params; select = _ctx$query2.select; populate = _ctx$query2.populate; select = getSelectStr(projectName + '.' + tableName, ctx.req.auth, select); _context6.next = 11; return Model.findOne(params ? JSON.parse(params) : {}, select).populate(populate ? JSON.parse(populate) : ''); case 11: source = _context6.sent; // if (!source) throw new RestError(404, 'SOURCE_NOTFOUND_ERR', 'source is not found'); ctx.body = source; case 13: case 'end': return _context6.stop(); } } }, _callee6, _this6); }))(); }, aggregate: function aggregate(ctx) { var _this7 = this; return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee7() { var Model, _ctx$query3, group, sort, query, _ctx$params3, projectName, tableName, select; return _regenerator2.default.wrap(function _callee7$(_context7) { while (1) { switch (_context7.prev = _context7.next) { case 0: Model = ctx.req.model; _ctx$query3 = ctx.query; group = _ctx$query3.group; sort = _ctx$query3.sort; query = (0, _objectWithoutProperties3.default)(_ctx$query3, ['group', 'sort']); _ctx$params3 = ctx.params; projectName = _ctx$params3.projectName; tableName = _ctx$params3.tableName; select = getSelectStr(projectName + '.' + tableName, ctx.req.auth, select); _context7.next = 11; return (0, _tools.getAggregate)({ model: Model, select: select, group: group, sort: sort, query: query }); case 11: ctx.body = _context7.sent; case 12: case 'end': return _context7.stop(); } } }, _callee7, _this7); }))(); } }; module.exports = exports['default'];