isActive -> stauts === paused

This commit is contained in:
Alex Holliday committed 2025-11-19 19:06:17 +00:00
1 parent 196ebc30dc
commit eea6b12be6
5 files changed
+26 -43

No files matched your search

+20 -32
View File
@@ -36,7 +36,7 @@ export interface IMonitorService {
range: string,
status?: string
) => Promise<MonitorWithChecksResponse>;
toggleActive: (
togglePause: (
userId: string,
teamId: string,
monitorId: string
@@ -103,23 +103,7 @@ class MonitorService implements IMonitorService {
}
if (Array.isArray(status) && status.length > 0) {
const uniqueStatuses = Array.from(new Set(status)) as MonitorStatus[];
const includesPaused = uniqueStatuses.includes("paused");
const activeStatuses = uniqueStatuses.filter(
(currentStatus) => currentStatus !== "paused"
);
if (includesPaused && activeStatuses.length > 0) {
matchConditions.$or = [
{ status: { $in: activeStatuses }, isActive: true },
{ isActive: false },
];
} else if (includesPaused) {
matchConditions.isActive = false;
} else {
matchConditions.status = { $in: uniqueStatuses };
matchConditions.isActive = true;
}
matchConditions.status = { $in: status };
}
const countResult = await Monitor.aggregate([
@@ -133,7 +117,7 @@ class MonitorService implements IMonitorService {
upCount: { $sum: { $cond: [{ $eq: ["$status", "up"] }, 1, 0] } },
downCount: { $sum: { $cond: [{ $eq: ["$status", "down"] }, 1, 0] } },
pausedCount: {
$sum: { $cond: [{ $eq: ["$isActive", false] }, 1, 0] },
$sum: { $cond: [{ $eq: ["$status", "paused"] }, 1, 0] },
},
},
},
@@ -150,6 +134,7 @@ class MonitorService implements IMonitorService {
const monitors = await Monitor.find(matchConditions)
.lean()
.sort({ name: 1 })
.skip(skip)
.limit(rowsPerPage);
@@ -172,7 +157,7 @@ class MonitorService implements IMonitorService {
latestChecks: { $push: "$$ROOT" },
},
},
{ $project: { latestChecks: { $slice: ["$latestChecks", 25] } } },
{ $project: { latestChecks: { $slice: [{ $ifNull: ["$latestChecks", []] }, 25] } } },
]);
const checksMap = new Map(
@@ -351,13 +336,13 @@ class MonitorService implements IMonitorService {
temperature: {
$map: {
input: {
$range: [0, { $size: { $arrayElemAt: ["$tempsArrays", 0] } }],
$range: [0, { $size: { $ifNull: [{ $arrayElemAt: ["$tempsArrays", 0] }, []] } }],
},
as: "idx",
in: {
$avg: {
$map: {
input: "$tempsArrays",
input: { $ifNull: ["$tempsArrays", []] },
as: "arr",
in: { $arrayElemAt: ["$$arr", "$$idx"] },
},
@@ -377,7 +362,7 @@ class MonitorService implements IMonitorService {
disk: {
$map: {
input: {
$range: [0, { $size: { $arrayElemAt: ["$disksArray", 0] } }],
$range: [0, { $size: { $ifNull: [{ $arrayElemAt: ["$disksArray", 0] }, []] } }],
},
as: "idx",
in: {
@@ -385,7 +370,7 @@ class MonitorService implements IMonitorService {
vars: {
diskGroup: {
$map: {
input: "$disksArray",
input: { $ifNull: ["$disksArray", []] },
as: "diskArr",
in: { $arrayElemAt: ["$$diskArr", "$$idx"] },
},
@@ -421,7 +406,7 @@ class MonitorService implements IMonitorService {
net: {
$map: {
input: {
$range: [0, { $size: { $arrayElemAt: ["$netsArray", 0] } }],
$range: [0, { $size: { $ifNull: [{ $arrayElemAt: ["$netsArray", 0] }, []] } }],
},
as: "idx",
in: {
@@ -429,7 +414,7 @@ class MonitorService implements IMonitorService {
vars: {
netGroup: {
$map: {
input: "$netsArray",
input: { $ifNull: ["$netsArray", []] },
as: "netArr",
in: { $arrayElemAt: ["$$netArr", "$$idx"] },
},
@@ -540,15 +525,19 @@ class MonitorService implements IMonitorService {
};
};
async toggleActive(userId: string, teamId: string, id: string) {
const pendingStatus: MonitorStatus = "initializing";
async togglePause(userId: string, teamId: string, id: string) {
const updatedMonitor = await Monitor.findOneAndUpdate(
{ _id: id, teamId },
[
{
$set: {
isActive: { $not: "$isActive" },
status: pendingStatus,
status: {
$cond: {
if: { $eq: ["$status", "paused"] },
then: "initializing",
else: "paused",
},
},
updatedBy: userId,
updatedAt: new Date(),
},
@@ -563,7 +552,7 @@ class MonitorService implements IMonitorService {
await this.jobQueue.updateJob(updatedMonitor);
if (updatedMonitor?.isActive) {
if (updatedMonitor?.status !== "paused") {
await this.jobQueue.resumeJob(updatedMonitor);
} else {
await this.jobQueue.pauseJob(updatedMonitor);
@@ -581,7 +570,6 @@ class MonitorService implements IMonitorService {
"name",
"secret",
"interval",
"isActive",
"n",
"notificationChannels",
];
@@ -111,7 +111,7 @@ export default class JobQueue implements IJobQueue {
id: monitor._id.toString(),
template: "monitor-job",
repeat: monitor.interval,
active: monitor.isActive,
active: monitor.status !== "paused",
data: monitor,
});
} catch (error) {