Update MongoDB connector

This commit is contained in:
Zaid Abdulla committed 2018-12-02 02:54:54 -08:00
1 parent ea8273556f
commit dfc8928a71
6 files changed
+219 -230

No files matched your search

+80 -76
View File
@@ -83,18 +83,23 @@ function listener(request, response) {
if (request.method === "PUT") {
const preset = JSON.parse(body);
preset._id = presetName;
db.presetsCollection.save(preset, err => {
if (err) return void throwError(err, response);
cache.del("presets_hash", err => {
db.presetsCollection.replaceOne(
{ _id: presetName },
preset,
{ upsert: true },
err => {
if (err) return void throwError(err, response);
response.writeHead(200);
response.end();
});
});
cache.del("presets_hash", err => {
if (err) return void throwError(err, response);
response.writeHead(200);
response.end();
});
}
);
} else if (request.method === "DELETE") {
db.presetsCollection.remove({ _id: presetName }, err => {
db.presetsCollection.deleteOne({ _id: presetName }, err => {
if (err) return void throwError(err, response);
cache.del("presets_hash", err => {
@@ -115,18 +120,23 @@ function listener(request, response) {
if (request.method === "PUT") {
const object = JSON.parse(body);
object._id = objectName;
db.objectsCollection.save(object, err => {
if (err) return void throwError(err, response);
cache.del("presets_hash", err => {
db.objectsCollection.replaceOne(
{ _id: objectName },
object,
{ upsert: true },
err => {
if (err) return void throwError(err, response);
response.writeHead(200);
response.end();
});
});
cache.del("presets_hash", err => {
if (err) return void throwError(err, response);
response.writeHead(200);
response.end();
});
}
);
} else if (request.method === "DELETE") {
db.objectsCollection.remove({ _id: objectName }, err => {
db.objectsCollection.deleteOne({ _id: objectName }, err => {
if (err) return void throwError(err, response);
cache.del("presets_hash", err => {
@@ -158,18 +168,23 @@ function listener(request, response) {
return;
}
db.provisionsCollection.save(object, err => {
if (err) return void throwError(err, response);
cache.del("presets_hash", err => {
db.provisionsCollection.replaceOne(
{ _id: provisionName },
object,
{ upsert: true },
err => {
if (err) return void throwError(err, response);
response.writeHead(200);
response.end();
});
});
cache.del("presets_hash", err => {
if (err) return void throwError(err, response);
response.writeHead(200);
response.end();
});
}
);
} else if (request.method === "DELETE") {
db.provisionsCollection.remove({ _id: provisionName }, err => {
db.provisionsCollection.deleteOne({ _id: provisionName }, err => {
if (err) return void throwError(err, response);
cache.del("presets_hash", err => {
@@ -201,18 +216,23 @@ function listener(request, response) {
return;
}
db.virtualParametersCollection.save(object, err => {
if (err) return void throwError(err, response);
cache.del("presets_hash", err => {
db.virtualParametersCollection.replaceOne(
{ _id: virtualParameterName },
object,
{ upsert: true },
err => {
if (err) return void throwError(err, response);
response.writeHead(200);
response.end();
});
});
cache.del("presets_hash", err => {
if (err) return void throwError(err, response);
response.writeHead(200);
response.end();
});
}
);
} else if (request.method === "DELETE") {
db.virtualParametersCollection.remove(
db.virtualParametersCollection.deleteOne(
{ _id: virtualParameterName },
err => {
if (err) return void throwError(err, response);
@@ -234,7 +254,7 @@ function listener(request, response) {
const deviceId = querystring.unescape(r[1]);
const tag = querystring.unescape(r[2]);
if (request.method === "POST") {
db.devicesCollection.update(
db.devicesCollection.updateOne(
{ _id: deviceId },
{ $addToSet: { _tags: tag } },
{ safe: true },
@@ -245,7 +265,7 @@ function listener(request, response) {
}
);
} else if (request.method === "DELETE") {
db.devicesCollection.update(
db.devicesCollection.updateOne(
{ _id: deviceId },
{ $pull: { _tags: tag } },
{ safe: true },
@@ -267,12 +287,12 @@ function listener(request, response) {
);
const deviceId = faultId.split(":", 1)[0];
const channel = faultId.slice(deviceId.length + 1);
db.faultsCollection.remove({ _id: faultId }, err => {
db.faultsCollection.deleteOne({ _id: faultId }, err => {
if (err) return void throwError(err, response);
if (channel.startsWith("task_")) {
const objId = new mongodb.ObjectID(channel.slice(5));
return void db.tasksCollection.remove({ _id: objId }, err => {
return void db.tasksCollection.deleteOne({ _id: objId }, err => {
if (err) return void throwError(err, response);
cache.del(`${deviceId}_tasks_faults_operations`, err => {
@@ -396,7 +416,7 @@ function listener(request, response) {
if (request.method === "DELETE") {
db.tasksCollection.findOne(
{ _id: new mongodb.ObjectID(taskId) },
{ device: 1 },
{ projection: { device: 1 } },
(err, task) => {
if (err) return void throwError(err, response);
@@ -407,12 +427,12 @@ function listener(request, response) {
}
const deviceId = task.device;
db.tasksCollection.remove(
db.tasksCollection.deleteOne(
{ _id: new mongodb.ObjectID(taskId) },
err => {
if (err) return void throwError(err, response);
db.faultsCollection.remove(
db.faultsCollection.deleteOne(
{ _id: `${deviceId}:task_${taskId}` },
err => {
if (err) return void throwError(err, response);
@@ -437,12 +457,12 @@ function listener(request, response) {
if (request.method === "POST") {
db.tasksCollection.findOne(
{ _id: new mongodb.ObjectID(taskId) },
{ device: 1 },
{ projection: { device: 1 } },
(err, task) => {
if (err) return void throwError(err, response);
const deviceId = task.device;
db.faultsCollection.remove(
db.faultsCollection.deleteOne(
{ _id: `${deviceId}:task_${taskId}` },
err => {
if (err) return void throwError(err, response);
@@ -476,25 +496,19 @@ function listener(request, response) {
productClass: request.headers.productclass,
version: request.headers.version
};
const gs = new mongodb.GridStore(db.mongoDb, filename, filename, "w", {
const bucket = new mongodb.GridFSBucket(db.client.db());
const uploadStream = bucket.openUploadStreamWithId(filename, filename, {
metadata: metadata
});
gs.open(err => {
uploadStream.end(body, err => {
if (err) return void throwError(err, response);
gs.write(body, err => {
if (err) return void throwError(err, response);
gs.close(err => {
if (err) return void throwError(err, response);
response.writeHead(201);
response.end();
});
});
response.writeHead(201);
response.end();
});
} else if (request.method === "DELETE") {
mongodb.GridStore.unlink(db.mongoDb, filename, err => {
const bucket = new mongodb.GridFSBucket(db.client.db());
bucket.delete(filename, err => {
if (err) return void throwError(err, response);
response.writeHead(200);
@@ -597,7 +611,7 @@ function listener(request, response) {
projection[p.trim()] = 1;
}
const cur = collection.find(q, projection, { batchSize: 50 });
const cur = collection.find(q, { projection: projection });
if (urlParts.query.sort) {
const s = JSON.parse(urlParts.query.sort);
@@ -613,9 +627,7 @@ function listener(request, response) {
if (urlParts.query.skip) cur.skip(parseInt(urlParts.query.skip));
let limit;
if (urlParts.query.limit)
cur.limit((limit = parseInt(urlParts.query.limit)));
if (urlParts.query.limit) cur.limit(parseInt(urlParts.query.limit));
cur.count(false, (err, total) => {
if (err) return void throwError(err);
@@ -632,24 +644,16 @@ function listener(request, response) {
response.write("[\n");
i = 0;
cur.each((err, item) => {
if (err) {
throwError(err);
return false;
}
if (item) {
cur.forEach(
item => {
if (i++) response.write(",\n");
response.write(JSON.stringify(item));
}
if (!item || i >= limit) {
},
err => {
if (err) return void throwError(err);
response.end("\n]");
return false;
}
return null;
});
);
});
} else {
response.writeHead(404);