// TIJDELIJKE debug-endpoint. Stuurt een handmatige pg_notify op // `scrum4me_changes` zonder een echte UPDATE te doen. Bedoeld om de // SSE-pipe te testen los van Prisma/triggers. // // VERWIJDEREN voor M8 out-of-draft. import { Client } from 'pg' export const runtime = 'nodejs' export const dynamic = 'force-dynamic' const CHANNEL = 'scrum4me_changes' export async function POST(request: Request) { // Productie-guard: anonieme test-emit op pg_notify is niet voor productie. if (process.env.NODE_ENV === 'production') { return new Response('Not found', { status: 404 }) } const directUrl = process.env.DIRECT_URL ?? process.env.DATABASE_URL if (!directUrl) { return Response.json({ error: 'DIRECT_URL/DATABASE_URL niet gezet' }, { status: 500 }) } let body: unknown = null try { body = await request.json() } catch { // empty body is OK — we vullen defaults in } const overrides = (body && typeof body === 'object' ? body : {}) as Record const payload = { op: 'U', entity: 'task', id: `debug-${Date.now()}`, story_id: 'debug-story', product_id: 'debug-product', sprint_id: null, assignee_id: null, task_status: 'TO_DO', task_sort_order: 1, task_title: 'manual debug emit', changed_fields: ['status'], debug: true, emitted_at: new Date().toISOString(), ...overrides, } const client = new Client({ connectionString: directUrl }) try { await client.connect() // pg_notify met JSON-string als payload — zelfde formaat als de trigger await client.query('SELECT pg_notify($1, $2)', [CHANNEL, JSON.stringify(payload)]) return Response.json({ ok: true, payload }) } catch (err) { return Response.json( { ok: false, error: err instanceof Error ? err.message : String(err) }, { status: 500 }, ) } finally { try { await client.end() } catch {} } }