website refactor

This commit is contained in:
2026-01-14 02:02:24 +01:00
parent 8d7c709e0c
commit 4522d41aef
291 changed files with 12763 additions and 9309 deletions

View File

@@ -1,28 +1,45 @@
import { PageWrapper } from '@/components/shared/state/PageWrapper';
import { DriversTemplate } from '@/templates/DriversTemplate';
import { DriverService } from '@/lib/services/drivers/DriverService';
import { DriversApiClient } from '@/lib/api/drivers/DriversApiClient';
import { EnhancedErrorReporter } from '@/lib/infrastructure/EnhancedErrorReporter';
import { ConsoleLogger } from '@/lib/infrastructure/logging/ConsoleLogger';
import { getWebsiteApiBaseUrl } from '@/lib/config/apiBaseUrl';
import { redirect } from 'next/navigation';
import { DriversPageQuery } from '@/lib/page-queries/page-queries/DriversPageQuery';
import { DriversPageClient } from './DriversPageClient';
export default async function Page() {
// Manual dependency creation (consistent with /races and /teams)
const baseUrl = getWebsiteApiBaseUrl();
const logger = new ConsoleLogger();
const errorReporter = new EnhancedErrorReporter(logger, {
showUserNotifications: true,
logToConsole: true,
reportToExternal: process.env.NODE_ENV === 'production',
});
// Execute the page query
const result = await DriversPageQuery.execute();
// Create API client
const driversApiClient = new DriversApiClient(baseUrl, errorReporter, logger);
// Handle different result statuses
switch (result.status) {
case 'notFound':
redirect('/404');
case 'redirect':
redirect(result.to);
case 'error':
// Pass error to client component
return (
<DriversPageClient
pageDto={null}
error={result.errorId}
/>
);
case 'ok':
const pageDto = result.dto;
const hasData = (pageDto.drivers?.length ?? 0) > 0;
if (!hasData) {
return (
<DriversPageClient
pageDto={null}
empty={{
title: 'No drivers found',
description: 'There are no drivers in the system yet.',
}}
/>
);
}
// Create service
const service = new DriverService(driversApiClient);
const data = await service.getDriverLeaderboard();
return <PageWrapper data={data} Template={DriversTemplate} />;
return (
<DriversPageClient
pageDto={pageDto}
/>
);
}
}