Implement faults page
This commit is contained in:
1 parent
b24c3626ac
commit
3cfac28fb1
16 files changed
+643
-246
No files matched your search
+22
-11
@@ -265,7 +265,7 @@ function postTask(task, connectionRequest, callback) {
|
||||
if (
|
||||
res.statusCode === 202 &&
|
||||
res.statusMessage !== "Task queued but not processed" &&
|
||||
res.statusMessage !== "Task faulte"
|
||||
res.statusMessage !== "Task faulted"
|
||||
)
|
||||
connectionRequestStatus = res.statusMessage;
|
||||
}
|
||||
@@ -305,18 +305,28 @@ function postTasks(deviceId, tasks) {
|
||||
connectionRequest: connectionRequestStatus,
|
||||
tasks: statuses
|
||||
});
|
||||
Promise.all(
|
||||
statuses.map(s => query("tasks", new Filter(["=", "_id", s._id])))
|
||||
)
|
||||
|
||||
let promises2 = [];
|
||||
for (let s of statuses) {
|
||||
promises2.push(query("tasks", new Filter(["=", "_id", s._id])));
|
||||
promises2.push(
|
||||
query(
|
||||
"faults",
|
||||
new Filter(["=", "_id", `${deviceId}:task_${s._id}`])
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
Promise.all(promises2)
|
||||
.then(res => {
|
||||
for (let [i, r] of res.entries()) {
|
||||
if (!r[0]) {
|
||||
statuses[i].status = "done";
|
||||
} else if (r[0].fault) {
|
||||
statuses[i].status = "fault";
|
||||
statuses[i].fault = r[0].fault;
|
||||
for (let [i, r] of statuses.entries()) {
|
||||
if (res[i * 2].length === 0) {
|
||||
r.status = "done";
|
||||
} else if (res[i * 2 + 1].length === 1) {
|
||||
r.status = "fault";
|
||||
r.fault = res[i * 2 + 1][0];
|
||||
}
|
||||
deleteResource("tasks", statuses[i]._id);
|
||||
deleteResource("tasks", r._id);
|
||||
}
|
||||
|
||||
resolve({
|
||||
@@ -333,3 +343,4 @@ function postTasks(deviceId, tasks) {
|
||||
exports.query = query;
|
||||
exports.count = count;
|
||||
exports.postTasks = postTasks;
|
||||
exports.deleteResource = deleteResource;
|
||||
+21
-3
@@ -13,6 +13,7 @@ const resources = {
|
||||
provisions: true,
|
||||
files: true,
|
||||
virtual_parameters: true,
|
||||
faults: true,
|
||||
tasks: false
|
||||
};
|
||||
|
||||
@@ -22,6 +23,12 @@ for (let [resource, update] of Object.entries(resources)) {
|
||||
if (ctx.request.query.filter) filter = new Filter(ctx.request.query.filter);
|
||||
if (ctx.request.query.limit) limit = +ctx.request.query.limit;
|
||||
|
||||
// Exclude temporary tasks and faults
|
||||
if (resource === "tasks" || resource === "faults") {
|
||||
let f = new Filter(["NOT", ["<", "expiry", Date.now() + 60000]]);
|
||||
filter = f.and(filter);
|
||||
}
|
||||
|
||||
let count = await apiFunctions.count(resource, filter, limit);
|
||||
ctx.set("X-Total-Count", count);
|
||||
ctx.body = "";
|
||||
@@ -33,6 +40,12 @@ for (let [resource, update] of Object.entries(resources)) {
|
||||
if (ctx.request.query.limit) limit = +ctx.request.query.limit;
|
||||
if (ctx.request.query.skip) skip = +ctx.request.query.skip;
|
||||
|
||||
// Exclude temporary tasks and faults
|
||||
if (resource === "tasks" || resource === "faults") {
|
||||
let f = new Filter(["NOT", ["<", "expiry", Date.now() + 60000]]);
|
||||
filter = f.and(filter);
|
||||
}
|
||||
|
||||
ctx.body = await apiFunctions.query(
|
||||
resource,
|
||||
filter,
|
||||
@@ -56,9 +69,14 @@ for (let [resource, update] of Object.entries(resources)) {
|
||||
ctx.body = res[0];
|
||||
});
|
||||
|
||||
if (update) {
|
||||
// TODO add PUT, PATCH, DELETE routes
|
||||
}
|
||||
// TODO add PUT, PATCH routes
|
||||
if (update)
|
||||
router.delete(`/${resource}/:id`, async ctx => {
|
||||
let found = await apiFunctions.deleteResource(resource, ctx.params.id);
|
||||
if (found) ctx.status = 200;
|
||||
else ctx.status = 404;
|
||||
ctx.body = "";
|
||||
});
|
||||
}
|
||||
|
||||
router.post("/devices/:id/tasks", async ctx => {
|
||||
|
||||
Reference in new issue
Block a user