clannad
Version:
data storage service with RESTful APIs.
153 lines (122 loc) • 4.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _regenerator = require('babel-runtime/regenerator');
var _regenerator2 = _interopRequireDefault(_regenerator);
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var _project = require('../models/project');
var _project2 = _interopRequireDefault(_project);
var _resterror = require('../services/resterror');
var _resterror2 = _interopRequireDefault(_resterror);
var _tools = require('../services/tools');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = {
add: function add(ctx) {
var _this = this;
return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee() {
var fields, project;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
fields = (0, _tools.getQuery)(ctx.req.body, ['name', 'domains']);
project = new _project2.default(fields);
_context.next = 4;
return project.save();
case 4:
ctx.body = { id: project._id };
case 5:
case 'end':
return _context.stop();
}
}
}, _callee, _this);
}))();
},
del: function del(ctx) {
var _this2 = this;
return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2() {
var projectName, project;
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
projectName = ctx.params.projectName;
_context2.next = 3;
return _project2.default.findOne({ name: projectName });
case 3:
project = _context2.sent;
if (project) {
_context2.next = 6;
break;
}
throw new _resterror2.default(404, 'PROJECT_NOTFOUND_ERR', 'project ' + projectName + ' is not found');
case 6:
if (!(project.tables && project.tables.length)) {
_context2.next = 8;
break;
}
throw new _resterror2.default(400, 'PROJECT_NOTEMPTY_ERR', 'tables array is not empty');
case 8:
_context2.next = 10;
return project.remove();
case 10:
case 'end':
return _context2.stop();
}
}
}, _callee2, _this2);
}))();
},
edit: function edit(ctx) {
var _this3 = this;
return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3() {
var fields, projectName;
return _regenerator2.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
fields = (0, _tools.getQuery)(ctx.req.body, ['domains']);
projectName = ctx.params.projectName;
_context3.next = 4;
return _project2.default.update({ name: projectName }, fields, { runValidators: true });
case 4:
case 'end':
return _context3.stop();
}
}
}, _callee3, _this3);
}))();
},
detail: function detail(ctx) {
var _this4 = this;
return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee4() {
var projectName, project;
return _regenerator2.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
projectName = ctx.params.projectName;
_context4.next = 3;
return _project2.default.findOne({ name: projectName }, '-__v -tables -tokens');
case 3:
project = _context4.sent;
if (project) {
_context4.next = 6;
break;
}
throw new _resterror2.default(404, 'PROJECT_NOTFOUND_ERR', 'project ' + projectName + ' is not found');
case 6:
ctx.body = project;
case 7:
case 'end':
return _context4.stop();
}
}
}, _callee4, _this4);
}))();
}
};
module.exports = exports['default'];