Files
got-gaming/app/api/leaderboard/route.ts

57 lines
1.3 KiB
TypeScript

import { NextResponse } from "next/server";
import { prisma } from "@/lib/prisma";
export async function GET() {
try {
const users = await prisma.user.findMany({
orderBy: {
score: "desc",
},
take: 10,
select: {
id: true,
username: true,
email: true,
score: true,
level: true,
avatar: true,
bio: true,
characterClass: true,
},
});
const leaderboard = users.map(
(
user: {
id: string;
username: string;
email: string;
score: number;
level: number;
avatar: string | null;
bio: string | null;
characterClass: string | null;
},
index: number
) => ({
rank: index + 1,
username: user.username,
email: user.email,
score: user.score,
level: user.level,
avatar: user.avatar,
bio: user.bio,
characterClass: user.characterClass,
})
);
return NextResponse.json(leaderboard);
} catch (error) {
console.error("Error fetching leaderboard:", error);
return NextResponse.json(
{ error: "Erreur lors de la récupération du leaderboard" },
{ status: 500 }
);
}
}