import { eq, and } from "drizzle-orm"; import { db } from "~/server/db"; import { watchlistItems, subscriptions } from "~/server/db/schema"; import { runScan } from "~/server/services/darkwatch.service"; interface DarkWatchScanPayload { userId: string; subscriptionId: string; } export async function handler(payload: DarkWatchScanPayload): Promise { const { userId, subscriptionId } = payload; const sub = await db .select() .from(subscriptions) .where(and(eq(subscriptions.id, subscriptionId), eq(subscriptions.status, "active"))) .limit(1) .then((r) => r[0]); if (!sub) { console.warn(`[darkwatch.scan] Subscription ${subscriptionId} not found or inactive, skipping`); return; } const items = await db .select() .from(watchlistItems) .where(and(eq(watchlistItems.subscriptionId, subscriptionId), eq(watchlistItems.isActive, true))); if (items.length === 0) { console.log(`[darkwatch.scan] No active watchlist items for subscription ${subscriptionId}`); return; } await runScan(userId); console.log(`[darkwatch.scan] Completed scan for subscription ${subscriptionId}`); }