Files
pagodera/app/api/listings/[id]/views/route.ts
T
Evandro Fonseca Junior 55eebde0ba feat: add user authentication UI to header component
Add login and register dialogs, user dropdown menu with profile link and logout option, and integrate with session management hook. Prevent hydration mismatches by conditionally rendering auth elements after mount. Update package-lock.json with new @esbuild dependencies for build tooling.
2025-11-04 02:33:29 -03:00

54 lines
1.2 KiB
TypeScript

import { NextRequest, NextResponse } from "next/server";
import { secureLogger } from "@/lib/secure-logger";
import { incrementViews } from "@/lib/db/queries/listings";
/**
* POST /api/listings/[id]/views
* Incrementa contador de views de um anúncio
* Não requer autenticação (público)
*/
export async function POST(
request: NextRequest,
{ params }: { params: Promise<{ id: string }> }
) {
try {
const { id } = await params;
const listingId = parseInt(id, 10);
if (isNaN(listingId)) {
return NextResponse.json(
{
success: false,
error: "ID de anúncio inválido",
},
{ status: 400 }
);
}
// Incrementar views
await incrementViews(listingId);
return NextResponse.json(
{
success: true,
message: "View incrementada",
},
{ status: 200 }
);
} catch (error) {
secureLogger.error("❌ Erro ao incrementar views", {
error: error instanceof Error ? error.message : "Erro desconhecido",
stack: error instanceof Error ? error.stack : undefined,
});
return NextResponse.json(
{
success: false,
error: "Erro ao incrementar views",
},
{ status: 500 }
);
}
}