41 lines
1.0 KiB
TypeScript

import { consola } from "consola";
const SYNC_INTERVAL = 60 * 60 * 1000; // 1 hour
export default defineNitroPlugin((nitro) => {
if (import.meta.dev) {
consola.info("[blocklist-cron] Skipping cron in dev mode");
return;
}
consola.info("[blocklist-cron] Starting hourly HaGeZi sync");
// Run initial sync after 30 seconds (let server boot)
const initialTimer = setTimeout(async () => {
await runSync();
}, 30_000);
// Then run every hour
const interval = setInterval(async () => {
await runSync();
}, SYNC_INTERVAL);
// Cleanup on close
nitro.hooks.hook("close", () => {
clearTimeout(initialTimer);
clearInterval(interval);
});
});
async function runSync() {
try {
consola.info("[blocklist-cron] Syncing HaGeZi gambling domains...");
const result = await $fetch("/api/blocklist/sync", { method: "POST" });
consola.success(
`[blocklist-cron] Synced ${(result as any).total_fetched} domains`,
);
} catch (err: any) {
consola.error("[blocklist-cron] Sync failed:", err.message ?? err);
}
}