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