First part of schemas POST

This commit is contained in:
Drew Gross
2016-02-05 14:56:11 -08:00
parent 9a14f53e45
commit 53dfca2d6f
2 changed files with 196 additions and 15 deletions

View File

@@ -1,7 +1,9 @@
// schemas.js
var express = require('express'),
PromiseRouter = require('./PromiseRouter');
Parse = require('parse/node').Parse,
PromiseRouter = require('./PromiseRouter'),
Schema = require('./Schema');
var router = new PromiseRouter();
@@ -54,7 +56,7 @@ function getAllSchemas(req) {
if (!req.auth.isMaster) {
return Promise.resolve({
status: 401,
response: {error: 'unauthorized'},
response: {error: 'master key not specified'},
});
}
return req.config.database.collection('_SCHEMA')
@@ -83,7 +85,51 @@ function getOneSchema(req) {
}));
}
function createSchema(req) {
if (!req.auth.isMaster) {
return Promise.resolve({
status: 401,
response: {error: 'master key not specified'},
});
}
if (req.params.className && req.body.className) {
if (req.params.className != req.body.className) {
return Promise.resolve({
status: 400,
response: {
code: Parse.Error.INVALID_CLASS_NAME,
error: 'class name mismatch between ' + req.body.className + ' and ' + req.params.className,
},
});
}
}
var className = req.params.className || req.body.className;
if (!className) {
return Promise.resolve({
status: 400,
response: {
code: 135,
error: 'POST ' + req.path + ' needs class name',
},
});
}
return req.config.database.collection('_SCHEMA')
.then(coll => Schema.load(coll))
.then(schema => schema.validateClassName(req.body.className))
.catch(error => {
console.log(arguments);
return {response: error};
})
.then(newSchema => {
for (key in newSchema.data) {
}
return {response: {}};
});
}
router.route('GET', '/schemas', getAllSchemas);
router.route('GET', '/schemas/:className', getOneSchema);
router.route('POST', '/schemas', createSchema);
router.route('POST', '/schemas/:className', createSchema);
module.exports = router;