39 lines
1.4 KiB
TypeScript
39 lines
1.4 KiB
TypeScript
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 - creates its own dependencies per contract
|
|
bind<RaceService>(RACE_SERVICE_TOKEN)
|
|
.toDynamicValue((ctx) => {
|
|
const raceApiClient = ctx.get<RacesApiClient>(RACE_API_CLIENT_TOKEN);
|
|
return new RaceService(raceApiClient);
|
|
})
|
|
.inSingletonScope();
|
|
|
|
// Race Results Service - creates its own dependencies per contract
|
|
bind<RaceResultsService>(RACE_RESULTS_SERVICE_TOKEN)
|
|
.to(RaceResultsService)
|
|
.inSingletonScope();
|
|
|
|
// Race Stewarding Service - creates its own dependencies per contract
|
|
bind<RaceStewardingService>(RACE_STEWARDING_SERVICE_TOKEN)
|
|
.to(RaceStewardingService)
|
|
.inSingletonScope();
|
|
}); |