// 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<string, unknown>
  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 {}
  }
}
