34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
import { DashboardOverviewUseCase } from '@core/racing/application/use-cases/DashboardOverviewUseCase';
|
|
import { Inject, Injectable } from '@nestjs/common';
|
|
import { DashboardOverviewDTO } from './dtos/DashboardOverviewDTO';
|
|
import { DashboardOverviewPresenter } from './presenters/DashboardOverviewPresenter';
|
|
|
|
// Core imports
|
|
import type { Logger } from '@core/shared/application/Logger';
|
|
|
|
// Tokens
|
|
import { DASHBOARD_OVERVIEW_USE_CASE_TOKEN, LOGGER_TOKEN } from './DashboardProviders';
|
|
|
|
@Injectable()
|
|
export class DashboardService {
|
|
private readonly presenter = new DashboardOverviewPresenter();
|
|
|
|
constructor(
|
|
@Inject(LOGGER_TOKEN) private readonly logger: Logger,
|
|
@Inject(DASHBOARD_OVERVIEW_USE_CASE_TOKEN) private readonly dashboardOverviewUseCase: DashboardOverviewUseCase,
|
|
) {}
|
|
|
|
async getDashboardOverview(driverId: string): Promise<DashboardOverviewDTO> {
|
|
this.logger.debug('[DashboardService] Getting dashboard overview:', { driverId });
|
|
|
|
const result = await this.dashboardOverviewUseCase.execute({ driverId });
|
|
|
|
if (result.isErr()) {
|
|
throw new Error(result.unwrapErr().details?.message ?? 'Failed to get dashboard overview');
|
|
}
|
|
|
|
this.presenter.present(result);
|
|
|
|
return this.presenter.getResponseModel();
|
|
}
|
|
} |