refactor dtos to ports
This commit is contained in:
@@ -2,7 +2,8 @@ import type { IRaceRepository } from '../../domain/repositories/IRaceRepository'
|
||||
import type { IRaceRegistrationRepository } from '../../domain/repositories/IRaceRegistrationRepository';
|
||||
import type { IResultRepository } from '../../domain/repositories/IResultRepository';
|
||||
import type { IStandingRepository } from '../../domain/repositories/IStandingRepository';
|
||||
import type { DriverRatingProvider } from '../ports/DriverRatingProvider';
|
||||
import type { GetDriverRatingInputPort } from '../ports/input/GetDriverRatingInputPort';
|
||||
import type { GetDriverRatingOutputPort } from '../ports/output/GetDriverRatingOutputPort';
|
||||
import { Result } from '../../domain/entities/Result';
|
||||
import { Standing } from '../../domain/entities/Standing';
|
||||
import type { AsyncUseCase } from '@core/shared/application';
|
||||
@@ -28,7 +29,7 @@ export class CompleteRaceUseCase
|
||||
private readonly raceRegistrationRepository: IRaceRegistrationRepository,
|
||||
private readonly resultRepository: IResultRepository,
|
||||
private readonly standingRepository: IStandingRepository,
|
||||
private readonly driverRatingProvider: DriverRatingProvider,
|
||||
private readonly getDriverRating: (input: GetDriverRatingInputPort) => Promise<GetDriverRatingOutputPort>,
|
||||
) {}
|
||||
|
||||
async execute(command: CompleteRaceCommandDTO): Promise<SharedResult<{}, ApplicationErrorCode<string>>> {
|
||||
@@ -46,8 +47,20 @@ export class CompleteRaceUseCase
|
||||
return SharedResult.err({ code: 'NO_REGISTERED_DRIVERS' });
|
||||
}
|
||||
|
||||
// Get driver ratings
|
||||
const driverRatings = this.driverRatingProvider.getRatings(registeredDriverIds);
|
||||
// Get driver ratings using clean ports
|
||||
const ratingPromises = registeredDriverIds.map(driverId =>
|
||||
this.getDriverRating({ driverId })
|
||||
);
|
||||
|
||||
const ratingResults = await Promise.all(ratingPromises);
|
||||
const driverRatings = new Map<string, number>();
|
||||
|
||||
registeredDriverIds.forEach((driverId, index) => {
|
||||
const rating = ratingResults[index].rating;
|
||||
if (rating !== null) {
|
||||
driverRatings.set(driverId, rating);
|
||||
}
|
||||
});
|
||||
|
||||
// Generate realistic race results
|
||||
const results = this.generateRaceResults(raceId, registeredDriverIds, driverRatings);
|
||||
|
||||
Reference in New Issue
Block a user