100 lines
3.8 KiB
TypeScript
100 lines
3.8 KiB
TypeScript
import { ContainerModule } from 'inversify';
|
|
import { LeagueService } from '../../services/leagues/LeagueService';
|
|
import { LeagueSettingsService } from '../../services/leagues/LeagueSettingsService';
|
|
import { LeagueStewardingService } from '../../services/leagues/LeagueStewardingService';
|
|
import { LeagueWalletService } from '../../services/leagues/LeagueWalletService';
|
|
import { LeagueMembershipService } from '../../services/leagues/LeagueMembershipService';
|
|
|
|
import { LeaguesApiClient } from '@/lib/api/leagues/LeaguesApiClient';
|
|
import { DriversApiClient } from '@/lib/api/drivers/DriversApiClient';
|
|
import { SponsorsApiClient } from '@/lib/api/sponsors/SponsorsApiClient';
|
|
import { RacesApiClient } from '@/lib/api/races/RacesApiClient';
|
|
import { WalletsApiClient } from '@/lib/api/wallets/WalletsApiClient';
|
|
import { RaceService } from '@/lib/services/races/RaceService';
|
|
import { ProtestService } from '@/lib/services/protests/ProtestService';
|
|
import { PenaltyService } from '@/lib/services/penalties/PenaltyService';
|
|
import { DriverService } from '@/lib/services/drivers/DriverService';
|
|
|
|
import {
|
|
LEAGUE_SERVICE_TOKEN,
|
|
LEAGUE_SETTINGS_SERVICE_TOKEN,
|
|
LEAGUE_STEWARDING_SERVICE_TOKEN,
|
|
LEAGUE_WALLET_SERVICE_TOKEN,
|
|
LEAGUE_MEMBERSHIP_SERVICE_TOKEN,
|
|
LEAGUE_API_CLIENT_TOKEN,
|
|
DRIVER_API_CLIENT_TOKEN,
|
|
SPONSOR_API_CLIENT_TOKEN,
|
|
RACE_API_CLIENT_TOKEN,
|
|
WALLET_API_CLIENT_TOKEN,
|
|
RACE_SERVICE_TOKEN,
|
|
PROTEST_SERVICE_TOKEN,
|
|
PENALTY_SERVICE_TOKEN,
|
|
DRIVER_SERVICE_TOKEN
|
|
} from '../tokens';
|
|
|
|
export const LeagueModule = new ContainerModule((options) => {
|
|
const bind = options.bind;
|
|
|
|
// League Service
|
|
bind<LeagueService>(LEAGUE_SERVICE_TOKEN)
|
|
.toDynamicValue((ctx) => {
|
|
const leagueApiClient = ctx.get<LeaguesApiClient>(LEAGUE_API_CLIENT_TOKEN);
|
|
const driverApiClient = ctx.get<DriversApiClient>(DRIVER_API_CLIENT_TOKEN);
|
|
const sponsorApiClient = ctx.get<SponsorsApiClient>(SPONSOR_API_CLIENT_TOKEN);
|
|
const raceApiClient = ctx.get<RacesApiClient>(RACE_API_CLIENT_TOKEN);
|
|
|
|
return new LeagueService(
|
|
leagueApiClient,
|
|
driverApiClient,
|
|
sponsorApiClient,
|
|
raceApiClient
|
|
);
|
|
})
|
|
.inSingletonScope();
|
|
|
|
// League Settings Service
|
|
bind<LeagueSettingsService>(LEAGUE_SETTINGS_SERVICE_TOKEN)
|
|
.toDynamicValue((ctx) => {
|
|
const leagueApiClient = ctx.get<LeaguesApiClient>(LEAGUE_API_CLIENT_TOKEN);
|
|
const driverApiClient = ctx.get<DriversApiClient>(DRIVER_API_CLIENT_TOKEN);
|
|
|
|
return new LeagueSettingsService(leagueApiClient, driverApiClient);
|
|
})
|
|
.inSingletonScope();
|
|
|
|
// League Stewarding Service
|
|
bind<LeagueStewardingService>(LEAGUE_STEWARDING_SERVICE_TOKEN)
|
|
.toDynamicValue((ctx) => {
|
|
const raceService = ctx.get<RaceService>(RACE_SERVICE_TOKEN);
|
|
const protestService = ctx.get<ProtestService>(PROTEST_SERVICE_TOKEN);
|
|
const penaltyService = ctx.get<PenaltyService>(PENALTY_SERVICE_TOKEN);
|
|
const driverService = ctx.get<DriverService>(DRIVER_SERVICE_TOKEN);
|
|
const membershipService = ctx.get<LeagueMembershipService>(LEAGUE_MEMBERSHIP_SERVICE_TOKEN);
|
|
|
|
return new LeagueStewardingService(
|
|
raceService,
|
|
protestService,
|
|
penaltyService,
|
|
driverService,
|
|
membershipService
|
|
);
|
|
})
|
|
.inSingletonScope();
|
|
|
|
// League Wallet Service
|
|
bind<LeagueWalletService>(LEAGUE_WALLET_SERVICE_TOKEN)
|
|
.toDynamicValue((ctx) => {
|
|
const walletApiClient = ctx.get<WalletsApiClient>(WALLET_API_CLIENT_TOKEN);
|
|
return new LeagueWalletService(walletApiClient);
|
|
})
|
|
.inSingletonScope();
|
|
|
|
// League Membership Service
|
|
bind<LeagueMembershipService>(LEAGUE_MEMBERSHIP_SERVICE_TOKEN)
|
|
.toDynamicValue((ctx) => {
|
|
const leagueApiClient = ctx.get<LeaguesApiClient>(LEAGUE_API_CLIENT_TOKEN);
|
|
return new LeagueMembershipService(leagueApiClient);
|
|
})
|
|
.inSingletonScope();
|
|
});
|