← back to Norma

app/api/email-analyzer/drafts/[id]/route.ts

59 lines

/**
 * GET    /api/email-analyzer/drafts/[id] — fetch a specific draft
 * DELETE /api/email-analyzer/drafts/[id] — delete a draft version
 */

import { NextRequest, NextResponse } from 'next/server';
import { query } from '@/lib/db';
import { requireRole } from '@/lib/require-role';

export async function GET(
  request: NextRequest,
  { params }: { params: Promise<{ id: string }> },
) {
  const auth = requireRole(request, 'admin', 'staff');
  if (auth instanceof NextResponse) return auth;

  try {
    const { id } = await params;
    const result = await query(
      'SELECT * FROM email_analyzer_drafts WHERE id = $1',
      [id],
    );

    if (result.rows.length === 0) {
      return NextResponse.json({ error: 'Draft not found' }, { status: 404 });
    }

    return NextResponse.json({ draft: result.rows[0] });
  } catch (err) {
    console.error('[email-analyzer/drafts/[id]] GET error:', (err as Error).message);
    return NextResponse.json({ error: 'Failed to fetch draft' }, { status: 500 });
  }
}

export async function DELETE(
  request: NextRequest,
  { params }: { params: Promise<{ id: string }> },
) {
  const auth = requireRole(request, 'admin', 'staff');
  if (auth instanceof NextResponse) return auth;

  try {
    const { id } = await params;
    const result = await query(
      'DELETE FROM email_analyzer_drafts WHERE id = $1 RETURNING id',
      [id],
    );

    if (result.rows.length === 0) {
      return NextResponse.json({ error: 'Draft not found' }, { status: 404 });
    }

    return NextResponse.json({ deleted: true });
  } catch (err) {
    console.error('[email-analyzer/drafts/[id]] DELETE error:', (err as Error).message);
    return NextResponse.json({ error: 'Failed to delete draft' }, { status: 500 });
  }
}