di usage in website
This commit is contained in:
96
apps/website/lib/di/modules/league.module.ts
Normal file
96
apps/website/lib/di/modules/league.module.ts
Normal file
@@ -0,0 +1,96 @@
|
||||
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)
|
||||
.to(LeagueMembershipService)
|
||||
.inSingletonScope();
|
||||
});
|
||||
Reference in New Issue
Block a user