refactor use cases

This commit is contained in:
2026-01-08 15:34:51 +01:00
parent d984ab24a8
commit 52e9a2f6a7
362 changed files with 5192 additions and 8409 deletions

View File

@@ -12,8 +12,6 @@ import type { IRaceRepository } from '@core/racing/domain/repositories/IRaceRepo
import type { IResultRepository } from '@core/racing/domain/repositories/IResultRepository';
import type { IStandingRepository } from '@core/racing/domain/repositories/IStandingRepository';
import type { Logger } from '@core/shared/application/Logger';
import type { UseCaseOutputPort } from '@core/shared/application/UseCaseOutputPort';
import { Result } from '@core/shared/application/Result';
// Import concrete in-memory implementations
import { ConsoleLogger } from '@adapters/logging/ConsoleLogger';
@@ -43,29 +41,6 @@ import { RequestProtestDefenseUseCase } from '@core/racing/application/use-cases
import { ReviewProtestUseCase } from '@core/racing/application/use-cases/ReviewProtestUseCase';
import { WithdrawFromRaceUseCase } from '@core/racing/application/use-cases/WithdrawFromRaceUseCase';
// Import use case result types
import type { GetAllRacesResult } from '@core/racing/application/use-cases/GetAllRacesUseCase';
import type { GetTotalRacesResult } from '@core/racing/application/use-cases/GetTotalRacesUseCase';
import type { ImportRaceResultsApiResult } from '@core/racing/application/use-cases/ImportRaceResultsApiUseCase';
import type { GetRaceDetailResult } from '@core/racing/application/use-cases/GetRaceDetailUseCase';
import type { GetRacesPageDataResult } from '@core/racing/application/use-cases/GetRacesPageDataUseCase';
import type { GetAllRacesPageDataResult } from '@core/racing/application/use-cases/GetAllRacesPageDataUseCase';
import type { GetRaceResultsDetailResult } from '@core/racing/application/use-cases/GetRaceResultsDetailUseCase';
import type { GetRaceWithSOFResult } from '@core/racing/application/use-cases/GetRaceWithSOFUseCase';
import type { GetRaceProtestsResult } from '@core/racing/application/use-cases/GetRaceProtestsUseCase';
import type { GetRacePenaltiesResult } from '@core/racing/application/use-cases/GetRacePenaltiesUseCase';
import type { RegisterForRaceResult } from '@core/racing/application/use-cases/RegisterForRaceUseCase';
import type { WithdrawFromRaceResult } from '@core/racing/application/use-cases/WithdrawFromRaceUseCase';
import type { CancelRaceResult } from '@core/racing/application/use-cases/CancelRaceUseCase';
import type { CompleteRaceResult } from '@core/racing/application/use-cases/CompleteRaceUseCase';
import type { ReopenRaceResult } from '@core/racing/application/use-cases/ReopenRaceUseCase';
import type { ImportRaceResultsResult } from '@core/racing/application/use-cases/ImportRaceResultsUseCase';
import type { FileProtestResult } from '@core/racing/application/use-cases/FileProtestUseCase';
import type { QuickPenaltyResult } from '@core/racing/application/use-cases/QuickPenaltyUseCase';
import type { ApplyPenaltyResult } from '@core/racing/application/use-cases/ApplyPenaltyUseCase';
import type { RequestProtestDefenseResult } from '@core/racing/application/use-cases/RequestProtestDefenseUseCase';
import type { ReviewProtestResult } from '@core/racing/application/use-cases/ReviewProtestUseCase';
// Import presenters
import { AllRacesPageDataPresenter } from './presenters/AllRacesPageDataPresenter';
import { CommandResultPresenter } from './presenters/CommandResultPresenter';
@@ -107,183 +82,6 @@ import {
export * from './RaceTokens';
// Adapter classes to bridge presenters with UseCaseOutputPort interface
class GetAllRacesOutputAdapter implements UseCaseOutputPort<GetAllRacesResult> {
constructor(private presenter: GetAllRacesPresenter) {}
present(result: GetAllRacesResult): void {
this.presenter.present(result);
}
}
class GetTotalRacesOutputAdapter implements UseCaseOutputPort<GetTotalRacesResult> {
constructor(private presenter: GetTotalRacesPresenter) {}
present(result: GetTotalRacesResult): void {
// Wrap the result in a Result.ok() to match presenter expectations
const resultWrapper = Result.ok<GetTotalRacesResult, { code: 'REPOSITORY_ERROR'; details: { message: string } }>(result);
this.presenter.present(resultWrapper);
}
}
class ImportRaceResultsApiOutputAdapter implements UseCaseOutputPort<ImportRaceResultsApiResult> {
constructor(private presenter: ImportRaceResultsApiPresenter) {}
present(result: ImportRaceResultsApiResult): void {
const resultWrapper = Result.ok<ImportRaceResultsApiResult, { code: 'REPOSITORY_ERROR'; details: { message: string } }>(result);
this.presenter.present(resultWrapper);
}
}
class RaceDetailOutputAdapter implements UseCaseOutputPort<GetRaceDetailResult> {
constructor(private presenter: RaceDetailPresenter) {}
present(result: GetRaceDetailResult): void {
this.presenter.present(result);
}
}
class RacesPageDataOutputAdapter implements UseCaseOutputPort<GetRacesPageDataResult> {
constructor(private presenter: RacesPageDataPresenter) {}
present(result: GetRacesPageDataResult): void {
const resultWrapper = Result.ok<GetRacesPageDataResult, { code: 'REPOSITORY_ERROR'; details: { message: string } }>(result);
this.presenter.present(resultWrapper);
}
}
class AllRacesPageDataOutputAdapter implements UseCaseOutputPort<GetAllRacesPageDataResult> {
constructor(private presenter: AllRacesPageDataPresenter) {}
present(result: GetAllRacesPageDataResult): void {
const resultWrapper = Result.ok<GetAllRacesPageDataResult, { code: 'REPOSITORY_ERROR'; details: { message: string } }>(result);
this.presenter.present(resultWrapper);
}
}
class RaceResultsDetailOutputAdapter implements UseCaseOutputPort<GetRaceResultsDetailResult> {
constructor(private presenter: RaceResultsDetailPresenter) {}
present(result: GetRaceResultsDetailResult): void {
this.presenter.present(result);
}
}
class RaceWithSOFOutputAdapter implements UseCaseOutputPort<GetRaceWithSOFResult> {
constructor(private presenter: RaceWithSOFPresenter) {}
present(result: GetRaceWithSOFResult): void {
const resultWrapper = Result.ok<GetRaceWithSOFResult, { code: 'RACE_NOT_FOUND' | 'REPOSITORY_ERROR'; details: { message: string } }>(result);
this.presenter.present(resultWrapper);
}
}
class RaceProtestsOutputAdapter implements UseCaseOutputPort<GetRaceProtestsResult> {
constructor(private presenter: RaceProtestsPresenter) {}
present(result: GetRaceProtestsResult): void {
const resultWrapper = Result.ok<GetRaceProtestsResult, { code: 'REPOSITORY_ERROR'; details: { message: string } }>(result);
this.presenter.present(resultWrapper);
}
}
class RacePenaltiesOutputAdapter implements UseCaseOutputPort<GetRacePenaltiesResult> {
constructor(private presenter: RacePenaltiesPresenter) {}
present(result: GetRacePenaltiesResult): void {
const resultWrapper = Result.ok<GetRacePenaltiesResult, { code: 'REPOSITORY_ERROR'; details: { message: string } }>(result);
this.presenter.present(resultWrapper);
}
}
class RegisterForRaceOutputAdapter implements UseCaseOutputPort<RegisterForRaceResult> {
constructor(private presenter: CommandResultPresenter) {}
present(): void {
this.presenter.presentSuccess('Race registered successfully');
}
}
class WithdrawFromRaceOutputAdapter implements UseCaseOutputPort<WithdrawFromRaceResult> {
constructor(private presenter: CommandResultPresenter) {}
present(): void {
this.presenter.presentSuccess('Race withdrawal successful');
}
}
class CancelRaceOutputAdapter implements UseCaseOutputPort<CancelRaceResult> {
constructor(private presenter: CommandResultPresenter) {}
present(): void {
this.presenter.presentSuccess('Race cancelled successfully');
}
}
class CompleteRaceOutputAdapter implements UseCaseOutputPort<CompleteRaceResult> {
constructor(private presenter: CommandResultPresenter) {}
present(): void {
this.presenter.presentSuccess('Race completed successfully');
}
}
class ReopenRaceOutputAdapter implements UseCaseOutputPort<ReopenRaceResult> {
constructor(private presenter: CommandResultPresenter) {}
present(): void {
this.presenter.presentSuccess('Race reopened successfully');
}
}
class ImportRaceResultsOutputAdapter implements UseCaseOutputPort<ImportRaceResultsResult> {
constructor(private presenter: CommandResultPresenter) {}
present(): void {
this.presenter.presentSuccess('Race results imported successfully');
}
}
class FileProtestOutputAdapter implements UseCaseOutputPort<FileProtestResult> {
constructor(private presenter: CommandResultPresenter) {}
present(): void {
this.presenter.presentSuccess('Protest filed successfully');
}
}
class QuickPenaltyOutputAdapter implements UseCaseOutputPort<QuickPenaltyResult> {
constructor(private presenter: CommandResultPresenter) {}
present(): void {
this.presenter.presentSuccess('Penalty applied successfully');
}
}
class ApplyPenaltyOutputAdapter implements UseCaseOutputPort<ApplyPenaltyResult> {
constructor(private presenter: CommandResultPresenter) {}
present(): void {
this.presenter.presentSuccess('Penalty applied successfully');
}
}
class RequestProtestDefenseOutputAdapter implements UseCaseOutputPort<RequestProtestDefenseResult> {
constructor(private presenter: CommandResultPresenter) {}
present(): void {
this.presenter.presentSuccess('Defense request sent successfully');
}
}
class ReviewProtestOutputAdapter implements UseCaseOutputPort<ReviewProtestResult> {
constructor(private presenter: CommandResultPresenter) {}
present(): void {
this.presenter.presentSuccess('Protest reviewed successfully');
}
}
export const RaceProviders: Provider[] = [
{
provide: DRIVER_RATING_PROVIDER_TOKEN,
@@ -354,24 +152,19 @@ export const RaceProviders: Provider[] = [
raceRepo: IRaceRepository,
leagueRepo: ILeagueRepository,
logger: Logger,
presenter: GetAllRacesPresenter,
) => {
const useCase = new GetAllRacesUseCase(raceRepo, leagueRepo, logger);
useCase.setOutput(new GetAllRacesOutputAdapter(presenter));
return useCase;
return new GetAllRacesUseCase(raceRepo, leagueRepo, logger);
},
inject: [RACE_REPOSITORY_TOKEN, LEAGUE_REPOSITORY_TOKEN, LOGGER_TOKEN, GET_ALL_RACES_PRESENTER_TOKEN],
inject: [RACE_REPOSITORY_TOKEN, LEAGUE_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: GetTotalRacesUseCase,
useFactory: (
raceRepo: IRaceRepository,
logger: Logger,
presenter: GetTotalRacesPresenter,
) => {
return new GetTotalRacesUseCase(raceRepo, logger, new GetTotalRacesOutputAdapter(presenter));
return new GetTotalRacesUseCase(raceRepo);
},
inject: [RACE_REPOSITORY_TOKEN, LOGGER_TOKEN, GET_TOTAL_RACES_PRESENTER_TOKEN],
inject: [RACE_REPOSITORY_TOKEN],
},
{
provide: ImportRaceResultsApiUseCase,
@@ -382,7 +175,6 @@ export const RaceProviders: Provider[] = [
driverRepo: IDriverRepository,
standingRepo: IStandingRepository,
logger: Logger,
presenter: ImportRaceResultsApiPresenter,
) => {
return new ImportRaceResultsApiUseCase(
raceRepo,
@@ -391,7 +183,6 @@ export const RaceProviders: Provider[] = [
driverRepo,
standingRepo,
logger,
new ImportRaceResultsApiOutputAdapter(presenter)
);
},
inject: [
@@ -401,7 +192,6 @@ export const RaceProviders: Provider[] = [
DRIVER_REPOSITORY_TOKEN,
STANDING_REPOSITORY_TOKEN,
LOGGER_TOKEN,
IMPORT_RACE_RESULTS_API_PRESENTER_TOKEN,
],
},
{
@@ -413,7 +203,6 @@ export const RaceProviders: Provider[] = [
raceRegRepo: IRaceRegistrationRepository,
resultRepo: IResultRepository,
leagueMembershipRepo: ILeagueMembershipRepository,
presenter: RaceDetailPresenter,
) => {
return new GetRaceDetailUseCase(
raceRepo,
@@ -422,7 +211,6 @@ export const RaceProviders: Provider[] = [
raceRegRepo,
resultRepo,
leagueMembershipRepo,
new RaceDetailOutputAdapter(presenter),
);
},
inject: [
@@ -432,7 +220,6 @@ export const RaceProviders: Provider[] = [
RACE_REGISTRATION_REPOSITORY_TOKEN,
RESULT_REPOSITORY_TOKEN,
LEAGUE_MEMBERSHIP_REPOSITORY_TOKEN,
RACE_DETAIL_PRESENTER_TOKEN,
],
},
{
@@ -441,16 +228,14 @@ export const RaceProviders: Provider[] = [
raceRepo: IRaceRepository,
leagueRepo: ILeagueRepository,
logger: Logger,
presenter: RacesPageDataPresenter,
) => {
return new GetRacesPageDataUseCase(
raceRepo,
leagueRepo,
logger,
new RacesPageDataOutputAdapter(presenter)
);
},
inject: [RACE_REPOSITORY_TOKEN, LEAGUE_REPOSITORY_TOKEN, LOGGER_TOKEN, RACES_PAGE_DATA_PRESENTER_TOKEN],
inject: [RACE_REPOSITORY_TOKEN, LEAGUE_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: GetAllRacesPageDataUseCase,
@@ -458,16 +243,14 @@ export const RaceProviders: Provider[] = [
raceRepo: IRaceRepository,
leagueRepo: ILeagueRepository,
logger: Logger,
presenter: AllRacesPageDataPresenter,
) => {
return new GetAllRacesPageDataUseCase(
raceRepo,
leagueRepo,
logger,
new AllRacesPageDataOutputAdapter(presenter)
);
},
inject: [RACE_REPOSITORY_TOKEN, LEAGUE_REPOSITORY_TOKEN, LOGGER_TOKEN, ALL_RACES_PAGE_DATA_PRESENTER_TOKEN],
inject: [RACE_REPOSITORY_TOKEN, LEAGUE_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: GetRaceResultsDetailUseCase,
@@ -477,7 +260,6 @@ export const RaceProviders: Provider[] = [
resultRepo: IResultRepository,
driverRepo: IDriverRepository,
penaltyRepo: IPenaltyRepository,
presenter: RaceResultsDetailPresenter,
) => {
return new GetRaceResultsDetailUseCase(
raceRepo,
@@ -485,7 +267,6 @@ export const RaceProviders: Provider[] = [
resultRepo,
driverRepo,
penaltyRepo,
new RaceResultsDetailOutputAdapter(presenter)
);
},
inject: [
@@ -494,7 +275,6 @@ export const RaceProviders: Provider[] = [
RESULT_REPOSITORY_TOKEN,
DRIVER_REPOSITORY_TOKEN,
PENALTY_REPOSITORY_TOKEN,
RACE_RESULTS_DETAIL_PRESENTER_TOKEN,
],
},
{
@@ -504,7 +284,6 @@ export const RaceProviders: Provider[] = [
raceRegRepo: IRaceRegistrationRepository,
resultRepo: IResultRepository,
driverRatingProvider: DriverRatingProvider,
presenter: RaceWithSOFPresenter,
) => {
return new GetRaceWithSOFUseCase(
raceRepo,
@@ -514,7 +293,6 @@ export const RaceProviders: Provider[] = [
const rating = driverRatingProvider.getRating(input.driverId);
return { rating };
},
new RaceWithSOFOutputAdapter(presenter)
);
},
inject: [
@@ -522,7 +300,6 @@ export const RaceProviders: Provider[] = [
RACE_REGISTRATION_REPOSITORY_TOKEN,
RESULT_REPOSITORY_TOKEN,
DRIVER_RATING_PROVIDER_TOKEN,
RACE_WITH_SOF_PRESENTER_TOKEN,
],
},
{
@@ -530,30 +307,26 @@ export const RaceProviders: Provider[] = [
useFactory: (
protestRepo: IProtestRepository,
driverRepo: IDriverRepository,
presenter: RaceProtestsPresenter,
) => {
return new GetRaceProtestsUseCase(
protestRepo,
driverRepo,
new RaceProtestsOutputAdapter(presenter)
);
},
inject: [PROTEST_REPOSITORY_TOKEN, DRIVER_REPOSITORY_TOKEN, RACE_PROTESTS_PRESENTER_TOKEN],
inject: [PROTEST_REPOSITORY_TOKEN, DRIVER_REPOSITORY_TOKEN],
},
{
provide: GetRacePenaltiesUseCase,
useFactory: (
penaltyRepo: IPenaltyRepository,
driverRepo: IDriverRepository,
presenter: RacePenaltiesPresenter,
) => {
return new GetRacePenaltiesUseCase(
penaltyRepo,
driverRepo,
new RacePenaltiesOutputAdapter(presenter)
);
},
inject: [PENALTY_REPOSITORY_TOKEN, DRIVER_REPOSITORY_TOKEN, RACE_PENALTIES_PRESENTER_TOKEN],
inject: [PENALTY_REPOSITORY_TOKEN, DRIVER_REPOSITORY_TOKEN],
},
{
provide: RegisterForRaceUseCase,
@@ -561,16 +334,14 @@ export const RaceProviders: Provider[] = [
raceRegRepo: IRaceRegistrationRepository,
leagueMembershipRepo: ILeagueMembershipRepository,
logger: Logger,
presenter: CommandResultPresenter,
) => {
return new RegisterForRaceUseCase(
raceRegRepo,
leagueMembershipRepo,
logger,
new RegisterForRaceOutputAdapter(presenter)
);
},
inject: [RACE_REGISTRATION_REPOSITORY_TOKEN, LEAGUE_MEMBERSHIP_REPOSITORY_TOKEN, LOGGER_TOKEN, COMMAND_RESULT_PRESENTER_TOKEN],
inject: [RACE_REGISTRATION_REPOSITORY_TOKEN, LEAGUE_MEMBERSHIP_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: WithdrawFromRaceUseCase,
@@ -578,31 +349,27 @@ export const RaceProviders: Provider[] = [
raceRepo: IRaceRepository,
raceRegRepo: IRaceRegistrationRepository,
logger: Logger,
presenter: CommandResultPresenter,
) => {
return new WithdrawFromRaceUseCase(
raceRepo,
raceRegRepo,
logger,
new WithdrawFromRaceOutputAdapter(presenter)
);
},
inject: [RACE_REPOSITORY_TOKEN, RACE_REGISTRATION_REPOSITORY_TOKEN, LOGGER_TOKEN, COMMAND_RESULT_PRESENTER_TOKEN],
inject: [RACE_REPOSITORY_TOKEN, RACE_REGISTRATION_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: CancelRaceUseCase,
useFactory: (
raceRepo: IRaceRepository,
logger: Logger,
presenter: CommandResultPresenter,
) => {
return new CancelRaceUseCase(
raceRepo,
logger,
new CancelRaceOutputAdapter(presenter)
);
},
inject: [RACE_REPOSITORY_TOKEN, LOGGER_TOKEN, COMMAND_RESULT_PRESENTER_TOKEN],
inject: [RACE_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: CompleteRaceUseCase,
@@ -612,7 +379,6 @@ export const RaceProviders: Provider[] = [
resultRepo: IResultRepository,
standingRepo: IStandingRepository,
driverRatingProvider: DriverRatingProvider,
presenter: CommandResultPresenter,
) => {
return new CompleteRaceUseCase(
raceRepo,
@@ -623,7 +389,6 @@ export const RaceProviders: Provider[] = [
const rating = driverRatingProvider.getRating(input.driverId);
return { rating, ratingChange: null };
},
new CompleteRaceOutputAdapter(presenter)
);
},
inject: [
@@ -632,7 +397,6 @@ export const RaceProviders: Provider[] = [
RESULT_REPOSITORY_TOKEN,
STANDING_REPOSITORY_TOKEN,
DRIVER_RATING_PROVIDER_TOKEN,
COMMAND_RESULT_PRESENTER_TOKEN,
],
},
{
@@ -640,15 +404,13 @@ export const RaceProviders: Provider[] = [
useFactory: (
raceRepo: IRaceRepository,
logger: Logger,
presenter: CommandResultPresenter,
) => {
return new ReopenRaceUseCase(
raceRepo,
logger,
new ReopenRaceOutputAdapter(presenter)
);
},
inject: [RACE_REPOSITORY_TOKEN, LOGGER_TOKEN, COMMAND_RESULT_PRESENTER_TOKEN],
inject: [RACE_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: ImportRaceResultsUseCase,
@@ -659,7 +421,6 @@ export const RaceProviders: Provider[] = [
driverRepo: IDriverRepository,
standingRepo: IStandingRepository,
logger: Logger,
presenter: CommandResultPresenter,
) => {
return new ImportRaceResultsUseCase(
raceRepo,
@@ -668,7 +429,6 @@ export const RaceProviders: Provider[] = [
driverRepo,
standingRepo,
logger,
new ImportRaceResultsOutputAdapter(presenter)
);
},
inject: [
@@ -678,7 +438,6 @@ export const RaceProviders: Provider[] = [
DRIVER_REPOSITORY_TOKEN,
STANDING_REPOSITORY_TOKEN,
LOGGER_TOKEN,
COMMAND_RESULT_PRESENTER_TOKEN,
],
},
{
@@ -687,16 +446,14 @@ export const RaceProviders: Provider[] = [
protestRepo: IProtestRepository,
raceRepo: IRaceRepository,
leagueMembershipRepo: ILeagueMembershipRepository,
presenter: CommandResultPresenter,
) => {
return new FileProtestUseCase(
protestRepo,
raceRepo,
leagueMembershipRepo,
new FileProtestOutputAdapter(presenter)
);
},
inject: [PROTEST_REPOSITORY_TOKEN, RACE_REPOSITORY_TOKEN, LEAGUE_MEMBERSHIP_REPOSITORY_TOKEN, COMMAND_RESULT_PRESENTER_TOKEN],
inject: [PROTEST_REPOSITORY_TOKEN, RACE_REPOSITORY_TOKEN, LEAGUE_MEMBERSHIP_REPOSITORY_TOKEN],
},
{
provide: QuickPenaltyUseCase,
@@ -705,17 +462,15 @@ export const RaceProviders: Provider[] = [
raceRepo: IRaceRepository,
leagueMembershipRepo: ILeagueMembershipRepository,
logger: Logger,
presenter: CommandResultPresenter,
) => {
return new QuickPenaltyUseCase(
penaltyRepo,
raceRepo,
leagueMembershipRepo,
logger,
new QuickPenaltyOutputAdapter(presenter)
);
},
inject: [PENALTY_REPOSITORY_TOKEN, RACE_REPOSITORY_TOKEN, LEAGUE_MEMBERSHIP_REPOSITORY_TOKEN, LOGGER_TOKEN, COMMAND_RESULT_PRESENTER_TOKEN],
inject: [PENALTY_REPOSITORY_TOKEN, RACE_REPOSITORY_TOKEN, LEAGUE_MEMBERSHIP_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: ApplyPenaltyUseCase,
@@ -725,7 +480,6 @@ export const RaceProviders: Provider[] = [
raceRepo: IRaceRepository,
leagueMembershipRepo: ILeagueMembershipRepository,
logger: Logger,
presenter: CommandResultPresenter,
) => {
return new ApplyPenaltyUseCase(
penaltyRepo,
@@ -733,10 +487,9 @@ export const RaceProviders: Provider[] = [
raceRepo,
leagueMembershipRepo,
logger,
new ApplyPenaltyOutputAdapter(presenter)
);
},
inject: [PENALTY_REPOSITORY_TOKEN, PROTEST_REPOSITORY_TOKEN, RACE_REPOSITORY_TOKEN, LEAGUE_MEMBERSHIP_REPOSITORY_TOKEN, LOGGER_TOKEN, COMMAND_RESULT_PRESENTER_TOKEN],
inject: [PENALTY_REPOSITORY_TOKEN, PROTEST_REPOSITORY_TOKEN, RACE_REPOSITORY_TOKEN, LEAGUE_MEMBERSHIP_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: RequestProtestDefenseUseCase,
@@ -745,17 +498,15 @@ export const RaceProviders: Provider[] = [
raceRepo: IRaceRepository,
leagueMembershipRepo: ILeagueMembershipRepository,
logger: Logger,
presenter: CommandResultPresenter,
) => {
return new RequestProtestDefenseUseCase(
protestRepo,
raceRepo,
leagueMembershipRepo,
logger,
new RequestProtestDefenseOutputAdapter(presenter)
);
},
inject: [PROTEST_REPOSITORY_TOKEN, RACE_REPOSITORY_TOKEN, LEAGUE_MEMBERSHIP_REPOSITORY_TOKEN, LOGGER_TOKEN, COMMAND_RESULT_PRESENTER_TOKEN],
inject: [PROTEST_REPOSITORY_TOKEN, RACE_REPOSITORY_TOKEN, LEAGUE_MEMBERSHIP_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
{
provide: ReviewProtestUseCase,
@@ -764,16 +515,14 @@ export const RaceProviders: Provider[] = [
raceRepo: IRaceRepository,
leagueMembershipRepo: ILeagueMembershipRepository,
logger: Logger,
presenter: CommandResultPresenter,
) => {
return new ReviewProtestUseCase(
protestRepo,
raceRepo,
leagueMembershipRepo,
logger,
new ReviewProtestOutputAdapter(presenter)
);
},
inject: [PROTEST_REPOSITORY_TOKEN, RACE_REPOSITORY_TOKEN, LEAGUE_MEMBERSHIP_REPOSITORY_TOKEN, LOGGER_TOKEN, COMMAND_RESULT_PRESENTER_TOKEN],
inject: [PROTEST_REPOSITORY_TOKEN, RACE_REPOSITORY_TOKEN, LEAGUE_MEMBERSHIP_REPOSITORY_TOKEN, LOGGER_TOKEN],
},
];