import { NextResponse } from 'next/server'; import prisma from '@/lib/prisma'; export const dynamic = 'force-dynamic'; // No caching export async function POST(request: Request) { try { const now = new Date(); // 1. Find all due reminders that haven't been processed const dueNotes = await prisma.note.findMany({ where: { reminder: { lte: now, // Less than or equal to now }, isReminderDone: false, isArchived: false, // Optional: exclude archived notes }, select: { id: true, title: true, content: true, reminder: true, // Add other fields useful for notification }, }); if (dueNotes.length === 0) { return NextResponse.json({ success: true, count: 0, message: 'No due reminders found' }); } // 2. Mark them as done (Atomic operation logic would be better but simple batch update is fine here) const noteIds = dueNotes.map((n: any) => n.id); await prisma.note.updateMany({ where: { id: { in: noteIds } }, data: { isReminderDone: true } }); // 3. Return the notes to N8N so it can send emails/messages return NextResponse.json({ success: true, count: dueNotes.length, reminders: dueNotes }); } catch (error) { console.error('Error processing cron reminders:', error); return NextResponse.json( { success: false, error: 'Internal Server Error' }, { status: 500 } ); } }