diff --git a/index.js b/index.js index 0bce0c72..d7c12a2e 100644 --- a/index.js +++ b/index.js @@ -111,6 +111,7 @@ function ParseServer(args) { router.merge(require('./push')); router.merge(require('./installations')); router.merge(require('./functions')); + router.merge(require('./schemas')); batch.mountOnto(router); diff --git a/schemas.js b/schemas.js new file mode 100644 index 00000000..04c84ef4 --- /dev/null +++ b/schemas.js @@ -0,0 +1,32 @@ +// schemas.js + +var express = require('express'), + PromiseRouter = require('./PromiseRouter'); + +var router = new PromiseRouter(); + +function mongoSchemaToSchemaAPIResponse(schema) { + fieldNames = Object.keys(schema).filter(key => key !== '_id'); + return { + className: schema._id, + fields: fieldNames.map(name => { + result = {}; + result[name] = { + type: schema[name], + }; + return result; + }), + }; +} + +function getAllSchemas(req) { + return req.config.database.collection('_SCHEMA') + .then(coll => coll.find({}).toArray()) + .then(schemas => ({response: { + results: schemas.map(mongoSchemaToSchemaAPIResponse) + }})); +} + +router.route('GET', '/schemas', getAllSchemas); + +module.exports = router;