38 lines
987 B
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { consola } from "consola";
import { getAllActiveMailUserIds } from "../db/mail";
const SCAN_INTERVAL = 30 * 60 * 1000; // every 30 minutes (proxy EXISTS handles real-time)
export default defineNitroPlugin((nitro) => {
if (import.meta.dev) return;
consola.info("[mail-scan-cron] Starting scanning due accounts every 30 min");
const interval = setInterval(runScan, SCAN_INTERVAL);
nitro.hooks.hook("close", () => clearInterval(interval));
});
async function runScan() {
let userIds: string[];
try {
userIds = await getAllActiveMailUserIds();
} catch {
return;
}
if (userIds.length === 0) return;
const adminSecret = process.env.NUXT_ADMIN_SECRET || process.env.ADMIN_SECRET;
if (!adminSecret) return;
await Promise.allSettled(
userIds.map((userId) =>
$fetch("/api/mail/scan-internal", {
method: "POST",
headers: { "x-admin-secret": adminSecret },
body: { userId },
}).catch(() => {})
)
);
}