di usage in website
This commit is contained in:
47
apps/website/lib/di/modules/race.module.ts
Normal file
47
apps/website/lib/di/modules/race.module.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
import { ContainerModule } from 'inversify';
|
||||
import { RaceService } from '@/lib/services/races/RaceService';
|
||||
import { RaceResultsService } from '@/lib/services/races/RaceResultsService';
|
||||
import { RaceStewardingService } from '@/lib/services/races/RaceStewardingService';
|
||||
|
||||
import { RacesApiClient } from '@/lib/api/races/RacesApiClient';
|
||||
import { ProtestsApiClient } from '@/lib/api/protests/ProtestsApiClient';
|
||||
import { PenaltiesApiClient } from '@/lib/api/penalties/PenaltiesApiClient';
|
||||
|
||||
import {
|
||||
RACE_SERVICE_TOKEN,
|
||||
RACE_RESULTS_SERVICE_TOKEN,
|
||||
RACE_STEWARDING_SERVICE_TOKEN,
|
||||
RACE_API_CLIENT_TOKEN,
|
||||
PROTEST_API_CLIENT_TOKEN,
|
||||
PENALTY_API_CLIENT_TOKEN
|
||||
} from '../tokens';
|
||||
|
||||
export const RaceModule = new ContainerModule((options) => {
|
||||
const bind = options.bind;
|
||||
|
||||
// Race Service
|
||||
bind<RaceService>(RACE_SERVICE_TOKEN)
|
||||
.toDynamicValue((ctx) => {
|
||||
const raceApiClient = ctx.get<RacesApiClient>(RACE_API_CLIENT_TOKEN);
|
||||
return new RaceService(raceApiClient);
|
||||
})
|
||||
.inSingletonScope();
|
||||
|
||||
// Race Results Service
|
||||
bind<RaceResultsService>(RACE_RESULTS_SERVICE_TOKEN)
|
||||
.toDynamicValue((ctx) => {
|
||||
const raceApiClient = ctx.get<RacesApiClient>(RACE_API_CLIENT_TOKEN);
|
||||
return new RaceResultsService(raceApiClient);
|
||||
})
|
||||
.inSingletonScope();
|
||||
|
||||
// Race Stewarding Service
|
||||
bind<RaceStewardingService>(RACE_STEWARDING_SERVICE_TOKEN)
|
||||
.toDynamicValue((ctx) => {
|
||||
const raceApiClient = ctx.get<RacesApiClient>(RACE_API_CLIENT_TOKEN);
|
||||
const protestApiClient = ctx.get<ProtestsApiClient>(PROTEST_API_CLIENT_TOKEN);
|
||||
const penaltyApiClient = ctx.get<PenaltiesApiClient>(PENALTY_API_CLIENT_TOKEN);
|
||||
return new RaceStewardingService(raceApiClient, protestApiClient, penaltyApiClient);
|
||||
})
|
||||
.inSingletonScope();
|
||||
});
|
||||
Reference in New Issue
Block a user