Skip to content

Commit b568d5a

Browse files
Fix application dashboard data fetch (#279)
1 parent 9d78549 commit b568d5a

File tree

1 file changed

+16
-21
lines changed

1 file changed

+16
-21
lines changed

src/services/device-management/application.service.ts

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -138,15 +138,15 @@ export class ApplicationService {
138138
if (query.statusCheck === "alert") {
139139
queryBuilder.andWhere(
140140
new Brackets(qb => {
141-
qb.where("dataTargets.id IS NULL").orWhere("latestMessage.sentTime < NOW() - INTERVAL '24 HOURS'");
141+
qb.andWhere("dataTargets.id IS NULL").orWhere("latestMessage.sentTime < NOW() - INTERVAL '24 HOURS'");
142142
})
143143
);
144144
}
145145

146146
if (query.statusCheck === "stable") {
147147
queryBuilder.andWhere(
148148
new Brackets(qb => {
149-
qb.where("dataTargets.id IS NOT NULL").orWhere("latestMessage.sentTime > NOW() - INTERVAL '24 HOURS'");
149+
qb.where("dataTargets.id IS NOT NULL").andWhere("latestMessage.sentTime > NOW() - INTERVAL '24 HOURS'");
150150
})
151151
);
152152
}
@@ -186,31 +186,16 @@ export class ApplicationService {
186186
queryBuilder.andWhere("app.owner = :owner", { owner: query.owner });
187187
}
188188

189-
if (query.statusCheck === "alert") {
190-
queryBuilder.andWhere(
191-
new Brackets(qb => {
192-
qb.where("dataTargets.id IS NULL").orWhere("latestMessage.sentTime < NOW() - INTERVAL '24 HOURS'");
193-
})
194-
);
195-
}
196-
197-
if (query.statusCheck === "stable") {
198-
queryBuilder.andWhere(
199-
new Brackets(qb => {
200-
qb.where("dataTargets.id IS NOT NULL").orWhere("latestMessage.sentTime > NOW() - INTERVAL '24 HOURS'");
201-
})
202-
);
203-
}
204-
205189
queryBuilder.orderBy(sorting);
206190
queryBuilder.take(query.limit).skip(query.offset);
207191

208192
try {
209193
const [result, total] = await queryBuilder.getManyAndCount();
210-
const mappedResult = result.map(app => {
194+
let mappedResult = result.map(app => {
211195
const latestMessage = app.iotDevices
212196
?.map(device => device.latestReceivedMessage)
213-
.find(msg => msg !== undefined);
197+
.sort((a, b) => (a?.sentTime > b?.sentTime ? 1 : -1))
198+
.find(msg => msg != undefined);
214199
const hasDataTargets = app.dataTargets && app.dataTargets.length > 0;
215200
const isLatestMessageOld = latestMessage
216201
? new Date(latestMessage.sentTime) < new Date(Date.now() - 24 * 60 * 60 * 1000)
@@ -228,6 +213,12 @@ export class ApplicationService {
228213
};
229214
});
230215

216+
if (query.statusCheck === "stable") {
217+
mappedResult = mappedResult.filter(a => a.statusCheck === "stable");
218+
} else if (query.statusCheck === "alert") {
219+
mappedResult = mappedResult.filter(a => a.statusCheck === "alert");
220+
}
221+
231222
this.externalSortResult(query, mappedResult);
232223

233224
return {
@@ -558,7 +549,11 @@ export class ApplicationService {
558549
) as LoRaWANDeviceWithChirpstackDataDto[];
559550

560551
for (const device of loraDevices) {
561-
await this.chirpstackDeviceService.enrichLoRaWANDevice(device);
552+
try {
553+
await this.chirpstackDeviceService.enrichLoRaWANDevice(device);
554+
} catch {
555+
// ignored
556+
}
562557
}
563558

564559
return {

0 commit comments

Comments
 (0)