improve UX

This commit is contained in:
fuomag9
2026-03-04 22:26:11 +01:00
parent d959fdf836
commit 7ceeb84fc2
3 changed files with 68 additions and 24 deletions

View File

@@ -1,6 +1,6 @@
import db from "../db";
import { wafEvents } from "../db/schema";
import { desc, like, or, count, and, gte, lte, sql } from "drizzle-orm";
import { desc, like, or, count, and, gte, lte, sql, inArray } from "drizzle-orm";
export type WafEvent = {
id: number;
@@ -61,6 +61,22 @@ export async function getTopWafRules(from: number, to: number, limit = 10): Prom
.map((r) => ({ ruleId: r.ruleId, count: r.count, message: r.message ?? null }));
}
export async function getWafRuleMessages(ruleIds: number[]): Promise<Record<number, string | null>> {
if (ruleIds.length === 0) return {};
const rows = await db
.select({
ruleId: wafEvents.ruleId,
message: sql<string | null>`MAX(${wafEvents.ruleMessage})`,
})
.from(wafEvents)
.where(inArray(wafEvents.ruleId, ruleIds))
.groupBy(wafEvents.ruleId);
return Object.fromEntries(
rows.filter((r): r is typeof r & { ruleId: number } => r.ruleId != null)
.map((r) => [r.ruleId, r.message ?? null])
);
}
export async function listWafEvents(limit = 50, offset = 0, search?: string): Promise<WafEvent[]> {
const rows = await db
.select()