24 lines
815 B
TypeScript
24 lines
815 B
TypeScript
import { NextResponse } from 'next/server';
|
|
import { z } from 'zod';
|
|
|
|
import { withAuth } from '@/lib/api/helpers';
|
|
import { parseBody } from '@/lib/api/route-helpers';
|
|
import { errorResponse } from '@/lib/errors';
|
|
import { ALERT_RULES } from '@/lib/db/schema/insights';
|
|
import { dismissAllForPort } from '@/lib/services/alerts.service';
|
|
|
|
const bodySchema = z.object({
|
|
ruleId: z.enum(ALERT_RULES).optional(),
|
|
severity: z.enum(['info', 'warning', 'critical']).optional(),
|
|
});
|
|
|
|
export const POST = withAuth(async (req, ctx) => {
|
|
try {
|
|
const { ruleId, severity } = await parseBody(req, bodySchema);
|
|
const dismissed = await dismissAllForPort(ctx.portId, ctx.userId, { ruleId, severity });
|
|
return NextResponse.json({ data: { dismissed } });
|
|
} catch (error) {
|
|
return errorResponse(error);
|
|
}
|
|
});
|