import { type NextRequest, NextResponse } from "next/server"; import { requireAuth } from "@/lib/auth/middleware"; import { getListings } from "@/lib/prisma/queries/listings"; import { secureLogger } from "@/lib/secure-logger"; /** * GET /api/listings/my * Lista anúncios do usuário autenticado */ export async function GET(request: NextRequest) { try { // Autenticação obrigatória const authResult = await requireAuth(request); if (authResult instanceof NextResponse) { return authResult; } const auth = authResult; const { searchParams } = new URL(request.url); const filters = { seller_id: auth.userId, status: searchParams.get("status") as | "active" | "sold" | "cancelled" | "in_escrow" | "expired" | undefined, page: searchParams.get("page") ? parseInt(searchParams.get("page")!, 10) : 1, pageSize: searchParams.get("pageSize") ? parseInt(searchParams.get("pageSize")!, 10) : 20, sortBy: (searchParams.get("sortBy") || "created_at") as | "created_at" | "price_pix" | "price_tibia_coins" | "price_gold_coins" | "views_count", sortOrder: (searchParams.get("sortOrder") || "DESC") as "ASC" | "DESC", }; const listingsData = await getListings(filters); return NextResponse.json( { success: true, listings: listingsData.listings, pagination: { page: filters.page, pageSize: filters.pageSize, total: listingsData.total, totalPages: Math.ceil(listingsData.total / filters.pageSize), }, }, { status: 200 }, ); } catch (error) { secureLogger.error("❌ Erro ao buscar anúncios do usuário", { error: error instanceof Error ? error.message : "Erro desconhecido", stack: error instanceof Error ? error.stack : undefined, }); return NextResponse.json( { success: false, error: "Erro ao buscar anúncios", }, { status: 500 }, ); } }