Add functions for DB access

This commit is contained in:
Zaid Abdulla committed 2018-12-26 00:22:07 -08:00
1 parent 327cb78f1a
commit 12cdc8a6f1
6 files changed
+114 -26

No files matched your search

+67
View File
@@ -0,0 +1,67 @@
"use strict";
const MongoClient = require("mongodb").MongoClient;
const config = require("./config");
const apiFunctions = require("./api-functions");
let _client = null;
function getClient() {
if (_client) return Promise.resolve(_client);
return new Promise((resolve, reject) => {
const CONNECTION_URL = config.get("server.mongodbConnectionUrl");
MongoClient.connect(CONNECTION_URL, (err, client) => {
if (err) return reject(err);
resolve((_client = client.db("genieacs-ui")));
});
});
}
function query(resource, filter, limit, skip, callback) {
let q;
if (filter && filter.ast) q = apiFunctions.filterToMongoQuery(filter.ast);
return new Promise((resolve, reject) => {
getClient().then(client => {
const collection = client.collection(resource);
if (!callback)
collection
.find(q)
.skip(skip || 0)
.limit(limit || 0)
.toArray((err, docs) => {
if (err) return reject(err);
return resolve(docs);
});
else
collection.find(q).forEach(
doc => {
callback(doc);
},
err => {
if (err) reject(err);
else resolve();
}
);
});
});
}
function count(resource, filter) {
let q;
if (filter && filter.ast) q = apiFunctions.filterToMongoQuery(filter.ast);
return new Promise((resolve, reject) => {
getClient().then(client => {
const collection = client.collection(resource);
collection.find(q).count((err, c) => {
if (err) reject(err);
else resolve(c);
});
});
});
}
exports.query = query;
exports.count = count;