From 05475929521065b24a61ea9ca35fb0bfca2a39f8 Mon Sep 17 00:00:00 2001 From: Drew Gross Date: Tue, 2 Feb 2016 17:38:47 -0800 Subject: [PATCH] Implement GET /parse/schemas --- index.js | 1 + schemas.js | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 schemas.js 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;