in src/app/api/v1/admin/qa-customs/hibp/route.ts [157:197]
export async function DELETE(req: NextRequest) {
const err = await checkAdmin();
if (err) return err;
const prodErr = errorIfProduction();
if (prodErr !== null) return prodErr;
const emailHashFull = req.nextUrl.searchParams.get("emailHashFull");
const breachId = Number(req.nextUrl.searchParams.get("breachId"));
if (!emailHashFull || !breachId || Number.isNaN(breachId)) {
return NextResponse.json(
{ error: "Missing or invalid emailHashPrefix or id parameter" },
{ status: 400 },
);
}
const subscriberRows = await getSubscribersByHashes([emailHashFull]);
for (const row of subscriberRows) {
const breachResolutionBefore = row.breach_resolution;
const breachResolutionAfter = getObjWithRemovedBreach(
breachResolutionBefore,
String(breachId),
);
const updateRes = await setBreachResolution(row, breachResolutionAfter);
if (!updateRes) {
logger.warn(
"QA custom breach_resolution was not updated, 'setBreachResolution' returned undefined",
);
}
}
try {
const emailHashPrefix = emailHashFull.slice(0, 6);
await deleteQaCustomBreach(emailHashPrefix, breachId);
return successResponse();
} catch (error) {
console.error("Error deleting custom breach:", error);
return internalServerError();
}
}