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.
51 lines
1.5 KiB
TypeScript
51 lines
1.5 KiB
TypeScript
import { NextRequest, NextResponse } from "next/server";
|
|
import { getActiveServers } from "@/lib/db/queries/servers";
|
|
import { secureLogger } from "@/lib/secure-logger";
|
|
|
|
/**
|
|
* GET /api/servers
|
|
* Lista todos os servidores ativos disponíveis
|
|
*/
|
|
export async function GET(request: NextRequest) {
|
|
try {
|
|
const servers = await getActiveServers();
|
|
|
|
return NextResponse.json(
|
|
{
|
|
success: true,
|
|
servers: servers.map((server) => ({
|
|
serverId: server.server_id,
|
|
serverName: server.server_name,
|
|
serverType: server.server_type,
|
|
location: server.location,
|
|
isActive: server.is_active,
|
|
stats: {
|
|
totalListings: server.total_listings,
|
|
totalUsers: server.total_users,
|
|
totalSubscribers: server.total_subscribers,
|
|
totalTransactions: server.total_transactions,
|
|
totalVolume: Number(server.total_volume),
|
|
averageListingPrice: Number(server.average_listing_price),
|
|
lastActivityAt: server.last_activity_at,
|
|
},
|
|
})),
|
|
},
|
|
{ status: 200 }
|
|
);
|
|
} catch (error) {
|
|
secureLogger.error("❌ Erro ao buscar servidores", {
|
|
error: error instanceof Error ? error.message : "Erro desconhecido",
|
|
stack: error instanceof Error ? error.stack : undefined,
|
|
});
|
|
|
|
return NextResponse.json(
|
|
{
|
|
success: false,
|
|
error: "Erro ao buscar servidores",
|
|
},
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
}
|
|
|