Files
gridpilot.gg/apps/website/app/leaderboards/drivers/page.tsx
Marc Mintel 844092eb8c
Some checks failed
CI / lint-typecheck (pull_request) Failing after 13s
CI / tests (pull_request) Has been skipped
CI / contract-tests (pull_request) Has been skipped
CI / e2e-tests (pull_request) Has been skipped
CI / comment-pr (pull_request) Has been skipped
CI / commit-types (pull_request) Has been skipped
code quality
2026-01-27 18:29:33 +01:00

37 lines
1.2 KiB
TypeScript

import { notFound, redirect } from 'next/navigation';
import { DriverRankingsPageQuery } from '@/lib/page-queries/DriverRankingsPageQuery';
import { Metadata } from 'next';
import { MetadataHelper } from '@/lib/seo/MetadataHelper';
import { DriverRankingsPageClient } from '@/client-wrapper/DriverRankingsPageClient';
import { routes } from '@/lib/routing/RouteConfig';
import { logger } from '@/lib/infrastructure/logging/logger';
export const metadata: Metadata = MetadataHelper.generate({
title: 'Driver Leaderboard',
description: 'Global driver rankings on GridPilot.',
path: '/leaderboards/drivers',
});
export default async function DriverLeaderboardPage() {
const result = await DriverRankingsPageQuery.execute();
if (result.isErr()) {
const error = result.getError();
// Handle different error types
if (error === 'notFound') {
notFound();
} else if (error === 'redirect') {
redirect(routes.public.home);
} else {
// serverError, networkError, unknown, validationError, unauthorized
logger.error('Driver rankings error:', undefined, { error });
notFound();
}
}
// Success
const viewData = result.unwrap();
return <DriverRankingsPageClient viewData={viewData} />;
}