// app/api/inbox/[tempEmailId]/route.ts
import { NextRequest, NextResponse } from "next/server";
import { getServerSession } from "next-auth";
import { authOptions } from "@/lib/auth";
import { prisma } from "@/lib/prisma";

interface RouteParams {
  params: { tempEmailId: string };
}

export async function GET(req: NextRequest, { params }: RouteParams) {
  try {
    const session = await getServerSession(authOptions);
    if (!session) {
      return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
    }

    const { tempEmailId } = params;

    const tempEmail = await prisma.tempEmail.findUnique({
      where: { id: tempEmailId },
      include: {
        messages: { orderBy: { receivedAt: "desc" } },
        domain: { select: { name: true } },
      },
    });

    if (!tempEmail) {
      return NextResponse.json({ error: "Temp email not found" }, { status: 404 });
    }

    return NextResponse.json({
      tempEmail: {
        id: tempEmail.id,
        address: tempEmail.address,
        expiresAt: tempEmail.expiresAt,
        isActive: tempEmail.isActive,
      },
      messages: tempEmail.messages,
    });
  } catch (err) {
    console.error(`GET /api/inbox/${params.tempEmailId} failed:`, err);
    return NextResponse.json({ error: "Failed to fetch inbox" }, { status: 500 });
  }
}
