website refactor
This commit is contained in:
@@ -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}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user