import { prisma } from "@/lib/prisma" import Link from "next/link" import Navigation from "@/components/Navigation" export const dynamic = "force-dynamic" export default async function Home() { // Fetch top 10 players by Elo rating const topPlayers = await prisma.player.findMany({ orderBy: { currentElo: "desc" }, take: 10, include: { partnershipStats: true, partnershipStats2: true, }, }) // Fetch most recent tournament const mostRecentTournament = await prisma.event.findFirst({ where: { eventType: "tournament", status: { not: "draft" } }, orderBy: { eventDate: "desc" }, include: { matches: { include: { player1P1: true, player1P2: true, player2P1: true, player2P2: true, }, orderBy: { playedAt: "desc" }, }, }, }) // Fetch club president (first user with club_admin role) const clubPresident = await prisma.user.findFirst({ where: { role: "club_admin" }, select: { name: true, email: true }, }) // Calculate win rates for top players const playersWithWinRates = topPlayers.map((player) => ({ ...player, winRate: player.gamesPlayed > 0 ? (player.wins / player.gamesPlayed) * 100 : 0, })) return (
Track your Euchre games, tournaments, and partnership performance with our comprehensive tournament management system.
| Rank | Player | Elo Rating | Games | Win Rate |
|---|---|---|---|---|
| {index + 1} | {player.name} | {player.currentElo} | {player.gamesPlayed} | {player.gamesPlayed > 0 ? `${player.winRate.toFixed(1)}%` : "N/A"} |
{new Date(mostRecentTournament.eventDate).toLocaleDateString()}
)}Status: {mostRecentTournament.status}
{clubPresident?.name || clubPresident?.email || "Not assigned"}