Update MongoDB connector
This commit is contained in:
1 parent
ea8273556f
commit
dfc8928a71
6 files changed
+219
-230
No files matched your search
+38
-28
@@ -196,18 +196,20 @@ function connectionRequest(deviceId, callback) {
|
||||
"CONNECTION_REQUEST_ALLOW_BASIC_AUTH",
|
||||
deviceId
|
||||
);
|
||||
const proj = {
|
||||
"Device.ManagementServer.ConnectionRequestURL._value": 1,
|
||||
"Device.ManagementServer.UDPConnectionRequestAddress._value": 1,
|
||||
"Device.ManagementServer.ConnectionRequestUsername._value": 1,
|
||||
"Device.ManagementServer.ConnectionRequestPassword._value": 1,
|
||||
"InternetGatewayDevice.ManagementServer.ConnectionRequestURL._value": 1,
|
||||
"InternetGatewayDevice.ManagementServer.UDPConnectionRequestAddress._value": 1,
|
||||
"InternetGatewayDevice.ManagementServer.ConnectionRequestUsername._value": 1,
|
||||
"InternetGatewayDevice.ManagementServer.ConnectionRequestPassword._value": 1
|
||||
const options = {
|
||||
projection: {
|
||||
"Device.ManagementServer.ConnectionRequestURL._value": 1,
|
||||
"Device.ManagementServer.UDPConnectionRequestAddress._value": 1,
|
||||
"Device.ManagementServer.ConnectionRequestUsername._value": 1,
|
||||
"Device.ManagementServer.ConnectionRequestPassword._value": 1,
|
||||
"InternetGatewayDevice.ManagementServer.ConnectionRequestURL._value": 1,
|
||||
"InternetGatewayDevice.ManagementServer.UDPConnectionRequestAddress._value": 1,
|
||||
"InternetGatewayDevice.ManagementServer.ConnectionRequestUsername._value": 1,
|
||||
"InternetGatewayDevice.ManagementServer.ConnectionRequestPassword._value": 1
|
||||
}
|
||||
};
|
||||
|
||||
db.devicesCollection.findOne({ _id: deviceId }, proj, (err, device) => {
|
||||
db.devicesCollection.findOne({ _id: deviceId }, options, (err, device) => {
|
||||
if (err) return void callback(err);
|
||||
if (!device) return void callback(new Error("No such device"));
|
||||
|
||||
@@ -284,22 +286,30 @@ function connectionRequest(deviceId, callback) {
|
||||
|
||||
function watchTask(deviceId, taskId, timeout, callback) {
|
||||
setTimeout(() => {
|
||||
db.tasksCollection.findOne({ _id: taskId }, { _id: 1 }, (err, task) => {
|
||||
if (err) return void callback(err);
|
||||
|
||||
if (!task) return void callback(null, "completed");
|
||||
|
||||
const q = { _id: `${deviceId}:task_${taskId}` };
|
||||
db.faultsCollection.findOne(q, { _id: 1 }, (err, fault) => {
|
||||
db.tasksCollection.findOne(
|
||||
{ _id: taskId },
|
||||
{ projection: { _id: 1 } },
|
||||
(err, task) => {
|
||||
if (err) return void callback(err);
|
||||
|
||||
if (fault) return void callback(null, "fault");
|
||||
if (!task) return void callback(null, "completed");
|
||||
|
||||
if ((timeout -= 500) <= 0) return void callback(null, "timeout");
|
||||
const q = { _id: `${deviceId}:task_${taskId}` };
|
||||
db.faultsCollection.findOne(
|
||||
q,
|
||||
{ projection: { _id: 1 } },
|
||||
(err, fault) => {
|
||||
if (err) return void callback(err);
|
||||
|
||||
watchTask(deviceId, taskId, timeout, callback);
|
||||
});
|
||||
});
|
||||
if (fault) return void callback(null, "fault");
|
||||
|
||||
if ((timeout -= 500) <= 0) return void callback(null, "timeout");
|
||||
|
||||
watchTask(deviceId, taskId, timeout, callback);
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
}, 500);
|
||||
}
|
||||
|
||||
@@ -323,23 +333,23 @@ function insertTasks(tasks, callback) {
|
||||
for (const task of tasks) {
|
||||
sanitizeTask(task, t => {
|
||||
if (t.uniqueKey) {
|
||||
db.tasksCollection.remove(
|
||||
db.tasksCollection.deleteOne(
|
||||
{ device: t.device, uniqueKey: t.uniqueKey },
|
||||
() => {}
|
||||
);
|
||||
}
|
||||
|
||||
if (--counter === 0) db.tasksCollection.insert(tasks, callback);
|
||||
if (--counter === 0) db.tasksCollection.insertMany(tasks, callback);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function deleteDevice(deviceId, callback) {
|
||||
db.tasksCollection.remove({ device: deviceId }, err => {
|
||||
db.tasksCollection.deleteMany({ device: deviceId }, err => {
|
||||
if (err) return void callback(err);
|
||||
db.devicesCollection.remove({ _id: deviceId }, err => {
|
||||
db.devicesCollection.deleteOne({ _id: deviceId }, err => {
|
||||
if (err) return void callback(err);
|
||||
db.faultsCollection.remove(
|
||||
db.faultsCollection.deleteMany(
|
||||
{
|
||||
_id: {
|
||||
$regex: `^${common.escapeRegExp(deviceId)}\\:`
|
||||
@@ -347,7 +357,7 @@ function deleteDevice(deviceId, callback) {
|
||||
},
|
||||
err => {
|
||||
if (err) return void callback(err);
|
||||
db.operationsCollection.remove(
|
||||
db.operationsCollection.deleteMany(
|
||||
{
|
||||
_id: {
|
||||
$regex: `^${common.escapeRegExp(deviceId)}\\:`
|
||||
|
||||
Reference in new issue
Block a user