From eee7dfc36317d5d179d47a3f802ac6ececa2335f Mon Sep 17 00:00:00 2001 From: Ewout Stortenbeker Date: Thu, 2 Aug 2018 11:20:34 +0200 Subject: [PATCH] Added data indexing & indexed queries, improved locking mechanism, added tests, fixed bugs, much more --- src/acebase-server.js | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/acebase-server.js b/src/acebase-server.js index 861c5b0..8243708 100644 --- a/src/acebase-server.js +++ b/src/acebase-server.js @@ -182,8 +182,8 @@ class AceBaseServer extends EventEmitter { // Execute query const path = req.path.substr(dbname.length + 8); const data = transport.deserialize(req.body); - const ref = db.ref(path); - const query = ref.query(); + //const ref = db.ref(path); + const query = db.query(path); data.query.filters.forEach(filter => { query.where(filter.key, filter.op, filter.compare); }); @@ -213,6 +213,30 @@ class AceBaseServer extends EventEmitter { }); }); + app.get(`/index/${dbname}`, (req, res) => { + // Get all indexes + db.indexes.list() + .then(indexes => { + res.send(indexes); + }); + }); + + app.post(`/index/${dbname}`, (req, res) => { + // create index + const data = req.body; + if (data.action === "create") { + db.indexes.create(data.path, data.key) + .then(() => { + res.send({ success: true }); + }) + .catch(err => { + console.error(err); + res.statusCode = 500; + res.send(err); + }) + } + }); + // Websocket implementation: const clients = { list: [],