diff --git a/src/lib/server/db/repositories/monitoring.ts b/src/lib/server/db/repositories/monitoring.ts index 01f51674..579779d3 100644 --- a/src/lib/server/db/repositories/monitoring.ts +++ b/src/lib/server/db/repositories/monitoring.ts @@ -485,7 +485,7 @@ export class MonitoringRepository extends BaseRepository { }); } - async deleteMonitorDataByTag(tag?: string, start?: number, end?: number): Promise { + async deleteMonitorDataByTag(tag?: string, start?: number, end?: number, status?: MonitoringStatus): Promise { const query = this.knex("monitoring_data"); if (tag) { query.where("monitor_tag", tag); @@ -496,6 +496,9 @@ export class MonitoringRepository extends BaseRepository { if (end !== undefined) { query.where("timestamp", "<=", end); } + if (status) { + query.where("status", status); + } return await query.del(); } diff --git a/src/routes/(manage)/manage/api/+server.ts b/src/routes/(manage)/manage/api/+server.ts index b76291a2..7ffdb126 100644 --- a/src/routes/(manage)/manage/api/+server.ts +++ b/src/routes/(manage)/manage/api/+server.ts @@ -219,7 +219,14 @@ export async function POST({ request, cookies }) { } else if (action == "deleteMonitor") { resp = await DeleteMonitorCompletelyUsingTag(data.tag); } else if (action == "deleteMonitorData") { - await db.deleteMonitorDataByTag(data.tag || undefined, data.start, data.end); + let status: MonitoringStatus | undefined; + if (data.status && data.status !== "ALL") { + if (!isMonitoringStatus(data.status)) { + return json({ error: "Invalid monitoring status" }, { status: 400 }); + } + status = data.status; + } + await db.deleteMonitorDataByTag(data.tag || undefined, data.start, data.end, status); resp = { success: true }; } else if (action == "cloneMonitor") { resp = await CloneMonitor({ diff --git a/src/routes/(manage)/manage/app/monitoring-data/+page.svelte b/src/routes/(manage)/manage/app/monitoring-data/+page.svelte index 67dbe55a..4df7fc5c 100644 --- a/src/routes/(manage)/manage/app/monitoring-data/+page.svelte +++ b/src/routes/(manage)/manage/app/monitoring-data/+page.svelte @@ -145,6 +145,7 @@ action: "deleteMonitorData", data: { tag: monitorTagFilter === "ALL" ? "" : monitorTagFilter, + status: statusFilter === "ALL" ? undefined : statusFilter, start: startTs, end: endTs }