website refactor

This commit is contained in:
2026-01-14 16:28:39 +01:00
parent 85e09b6f4d
commit 4b7d82ab43
119 changed files with 2403 additions and 1615 deletions

View File

@@ -5,31 +5,12 @@ import { LeagueStewardingService } from '../../services/leagues/LeagueStewarding
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
LEAGUE_MEMBERSHIP_SERVICE_TOKEN
} from '../tokens';
export const LeagueModule = new ContainerModule((options) => {
@@ -37,63 +18,36 @@ export const LeagueModule = new ContainerModule((options) => {
// 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
);
.toDynamicValue(() => {
return new LeagueService();
})
.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);
.toDynamicValue(() => {
return new LeagueSettingsService();
})
.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
);
.toDynamicValue(() => {
return new LeagueStewardingService();
})
.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);
.toDynamicValue(() => {
return new LeagueWalletService();
})
.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);
.toDynamicValue(() => {
return new LeagueMembershipService();
})
.inSingletonScope();
});

View File

@@ -1,16 +1,12 @@
import { ContainerModule } from 'inversify';
import { SPONSOR_SERVICE_TOKEN, SPONSOR_API_CLIENT_TOKEN } from '../tokens';
import { SPONSOR_SERVICE_TOKEN } from '../tokens';
import { SponsorService } from '@/lib/services/sponsors/SponsorService';
import { SponsorsApiClient } from '@/lib/api/sponsors/SponsorsApiClient';
export const SponsorModule = new ContainerModule((options) => {
const bind = options.bind;
// Sponsor Service
// Sponsor Service - creates its own dependencies for server safety
bind<SponsorService>(SPONSOR_SERVICE_TOKEN)
.toDynamicValue((ctx) => {
const apiClient = ctx.get<SponsorsApiClient>(SPONSOR_API_CLIENT_TOKEN);
return new SponsorService(apiClient);
})
.inSingletonScope();
.to(SponsorService)
.inTransientScope(); // Not singleton for server concurrency
});