website refactor

This commit is contained in:
2026-01-17 15:46:55 +01:00
parent 4d5ce9bfd6
commit 72a626ce71
346 changed files with 19308 additions and 8605 deletions

View File

@@ -9,6 +9,9 @@ import { DomainError, Service } from '@/lib/contracts/services/Service';
import { getWebsiteApiBaseUrl } from '@/lib/config/apiBaseUrl';
import { ConsoleLogger } from '@/lib/infrastructure/logging/ConsoleLogger';
import { EnhancedErrorReporter } from '@/lib/infrastructure/EnhancedErrorReporter';
import { DriverLeaderboardViewModel } from '@/lib/view-models/DriverLeaderboardViewModel';
import { DriverViewModel } from '@/lib/view-models/DriverViewModel';
import { CompleteOnboardingViewModel } from '@/lib/view-models/CompleteOnboardingViewModel';
/**
* Driver Service - DTO Only
@@ -19,46 +22,59 @@ import { EnhancedErrorReporter } from '@/lib/infrastructure/EnhancedErrorReporte
export class DriverService implements Service {
private readonly apiClient: DriversApiClient;
constructor() {
const baseUrl = getWebsiteApiBaseUrl();
const logger = new ConsoleLogger();
const errorReporter = new EnhancedErrorReporter(logger);
this.apiClient = new DriversApiClient(baseUrl, errorReporter, logger);
constructor(apiClient?: DriversApiClient) {
if (apiClient) {
this.apiClient = apiClient;
} else {
const baseUrl = getWebsiteApiBaseUrl();
const logger = new ConsoleLogger();
const errorReporter = new EnhancedErrorReporter(logger);
this.apiClient = new DriversApiClient(baseUrl, errorReporter, logger);
}
}
async getDriver(id: string): Promise<any> {
return this.apiClient.getDriver(id);
}
/**
* Get driver leaderboard (returns DTO)
*/
async getDriverLeaderboard(): Promise<Result<unknown, DomainError>> {
async getDriverLeaderboard(): Promise<any> {
try {
const data = await this.apiClient.getLeaderboard();
return Result.ok(data);
const res = await this.apiClient.getLeaderboard();
const data = (res as any).value || res;
return new DriverLeaderboardViewModel(data);
} catch (error: unknown) {
return Result.err({ type: 'serverError', message: (error as Error).message || 'Failed to get leaderboard' });
throw error;
}
}
/**
* Complete driver onboarding (returns DTO)
*/
async completeDriverOnboarding(input: CompleteOnboardingInputDTO): Promise<Result<CompleteOnboardingOutputDTO, DomainError>> {
async completeDriverOnboarding(input: CompleteOnboardingInputDTO): Promise<any> {
try {
const data = await this.apiClient.completeOnboarding(input);
return Result.ok(data);
const res = await this.apiClient.completeOnboarding(input);
const data = (res as any).value || res;
return new CompleteOnboardingViewModel(data);
} catch (error: unknown) {
return Result.err({ type: 'serverError', message: (error as Error).message || 'Failed to complete onboarding' });
throw error;
}
}
/**
* Get current driver (returns DTO)
*/
async getCurrentDriver(): Promise<Result<DriverDTO | null, DomainError>> {
async getCurrentDriver(): Promise<any> {
try {
const data = await this.apiClient.getCurrent();
return Result.ok(data);
const res = await this.apiClient.getCurrent();
if (!res) return null;
const data = (res as any).value || res;
if (!data) return null;
return new DriverViewModel(data);
} catch (error: unknown) {
return Result.err({ type: 'serverError', message: (error as Error).message || 'Failed to get current driver' });
throw error;
}
}