website refactor
This commit is contained in:
@@ -11,6 +11,7 @@ import { RaceModule } from './modules/race.module';
|
||||
import { LandingModule } from './modules/landing.module';
|
||||
import { PolicyModule } from './modules/policy.module';
|
||||
import { SponsorModule } from './modules/sponsor.module';
|
||||
import { AnalyticsModule } from './modules/analytics.module';
|
||||
|
||||
/**
|
||||
* Creates and configures the root DI container
|
||||
@@ -29,7 +30,8 @@ export function createContainer(): Container {
|
||||
RaceModule,
|
||||
LandingModule,
|
||||
PolicyModule,
|
||||
SponsorModule
|
||||
SponsorModule,
|
||||
AnalyticsModule
|
||||
);
|
||||
|
||||
return container;
|
||||
|
||||
15
apps/website/lib/di/modules/analytics.module.ts
Normal file
15
apps/website/lib/di/modules/analytics.module.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { ContainerModule } from 'inversify';
|
||||
import { DashboardService } from '@/lib/services/analytics/DashboardService';
|
||||
|
||||
import {
|
||||
DASHBOARD_SERVICE_TOKEN,
|
||||
} from '../tokens';
|
||||
|
||||
export const AnalyticsModule = new ContainerModule((options) => {
|
||||
const bind = options.bind;
|
||||
|
||||
// Dashboard Service - creates its own dependencies per contract
|
||||
bind<DashboardService>(DASHBOARD_SERVICE_TOKEN)
|
||||
.to(DashboardService)
|
||||
.inSingletonScope();
|
||||
});
|
||||
@@ -13,13 +13,13 @@ import {
|
||||
RACE_STEWARDING_SERVICE_TOKEN,
|
||||
RACE_API_CLIENT_TOKEN,
|
||||
PROTEST_API_CLIENT_TOKEN,
|
||||
PENALTY_API_CLIENT_TOKEN
|
||||
PENALTY_API_CLIENT_TOKEN,
|
||||
} from '../tokens';
|
||||
|
||||
export const RaceModule = new ContainerModule((options) => {
|
||||
const bind = options.bind;
|
||||
|
||||
// Race Service
|
||||
// Race Service - creates its own dependencies per contract
|
||||
bind<RaceService>(RACE_SERVICE_TOKEN)
|
||||
.toDynamicValue((ctx) => {
|
||||
const raceApiClient = ctx.get<RacesApiClient>(RACE_API_CLIENT_TOKEN);
|
||||
@@ -27,21 +27,13 @@ export const RaceModule = new ContainerModule((options) => {
|
||||
})
|
||||
.inSingletonScope();
|
||||
|
||||
// Race Results Service
|
||||
// Race Results Service - creates its own dependencies per contract
|
||||
bind<RaceResultsService>(RACE_RESULTS_SERVICE_TOKEN)
|
||||
.toDynamicValue((ctx) => {
|
||||
const raceApiClient = ctx.get<RacesApiClient>(RACE_API_CLIENT_TOKEN);
|
||||
return new RaceResultsService(raceApiClient);
|
||||
})
|
||||
.to(RaceResultsService)
|
||||
.inSingletonScope();
|
||||
|
||||
// Race Stewarding Service
|
||||
// Race Stewarding Service - creates its own dependencies per contract
|
||||
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);
|
||||
})
|
||||
.to(RaceStewardingService)
|
||||
.inSingletonScope();
|
||||
});
|
||||
@@ -1,15 +1,16 @@
|
||||
import { ContainerModule } from 'inversify';
|
||||
import { TEAM_SERVICE_TOKEN, TEAM_API_CLIENT_TOKEN } from '../tokens';
|
||||
import { TEAM_SERVICE_TOKEN, TEAM_JOIN_SERVICE_TOKEN } from '../tokens';
|
||||
import { TeamService } from '@/lib/services/teams/TeamService';
|
||||
import { TeamsApiClient } from '@/lib/api/teams/TeamsApiClient';
|
||||
import { TeamJoinService } from '@/lib/services/teams/TeamJoinService';
|
||||
|
||||
export const TeamModule = new ContainerModule((options) => {
|
||||
const bind = options.bind;
|
||||
|
||||
bind(TEAM_SERVICE_TOKEN)
|
||||
.toDynamicValue((ctx) => {
|
||||
const apiClient = ctx.get<TeamsApiClient>(TEAM_API_CLIENT_TOKEN);
|
||||
return new TeamService(apiClient);
|
||||
})
|
||||
.to(TeamService)
|
||||
.inSingletonScope();
|
||||
|
||||
bind(TEAM_JOIN_SERVICE_TOKEN)
|
||||
.to(TeamJoinService)
|
||||
.inSingletonScope();
|
||||
});
|
||||
@@ -29,14 +29,24 @@ export const DASHBOARD_API_CLIENT_TOKEN = Symbol.for('Api.DashboardClient');
|
||||
import type { LeagueService } from '@/lib/services/leagues/LeagueService';
|
||||
import type { LeagueMembershipService } from '@/lib/services/leagues/LeagueMembershipService';
|
||||
import type { LeagueWalletService } from '@/lib/services/leagues/LeagueWalletService';
|
||||
import type { LeagueSettingsService } from '@/lib/services/leagues/LeagueSettingsService';
|
||||
import type { LeagueStewardingService } from '@/lib/services/leagues/LeagueStewardingService';
|
||||
import type { DriverService } from '@/lib/services/drivers/DriverService';
|
||||
// These services are created as needed
|
||||
import type { AuthService } from '@/lib/services/auth/AuthService';
|
||||
import type { SessionService } from '@/lib/services/auth/SessionService';
|
||||
import type { PenaltyService } from '@/lib/services/penalties/PenaltyService';
|
||||
import type { PolicyService } from '@/lib/services/policy/PolicyService';
|
||||
import type { AdminService } from '@/lib/services/admin/AdminService';
|
||||
import type { OnboardingService } from '@/lib/services/onboarding/OnboardingService';
|
||||
import type { SponsorService } from '@/lib/services/sponsors/SponsorService';
|
||||
import type { ProtestService } from '@/lib/services/protests/ProtestService';
|
||||
import type { LandingService } from '@/lib/services/landing/LandingService';
|
||||
import type { TeamService } from '@/lib/services/teams/TeamService';
|
||||
import type { TeamJoinService } from '@/lib/services/teams/TeamJoinService';
|
||||
import type { RaceService } from '@/lib/services/races/RaceService';
|
||||
import type { RaceResultsService } from '@/lib/services/races/RaceResultsService';
|
||||
import type { RaceStewardingService } from '@/lib/services/races/RaceStewardingService';
|
||||
import type { DashboardService } from '@/lib/services/analytics/DashboardService';
|
||||
|
||||
export const LEAGUE_SERVICE_TOKEN = Symbol.for('Service.League') as symbol & { type: LeagueService };
|
||||
export const LEAGUE_MEMBERSHIP_SERVICE_TOKEN = Symbol.for('Service.LeagueMembership') as symbol & { type: LeagueMembershipService };
|
||||
@@ -44,11 +54,14 @@ export const LEAGUE_WALLET_SERVICE_TOKEN = Symbol.for('Service.LeagueWallet') as
|
||||
|
||||
export const DRIVER_SERVICE_TOKEN = Symbol.for('Service.Driver') as symbol & { type: DriverService };
|
||||
|
||||
export const TEAM_SERVICE_TOKEN = Symbol.for('Service.Team');
|
||||
export const TEAM_SERVICE_TOKEN = Symbol.for('Service.Team') as symbol & { type: TeamService };
|
||||
export const TEAM_JOIN_SERVICE_TOKEN = Symbol.for('Service.TeamJoin') as symbol & { type: TeamJoinService };
|
||||
|
||||
export const RACE_SERVICE_TOKEN = Symbol.for('Service.Race');
|
||||
export const RACE_SERVICE_TOKEN = Symbol.for('Service.Race') as symbol & { type: RaceService };
|
||||
export const RACE_RESULTS_SERVICE_TOKEN = Symbol.for('Service.RaceResults') as symbol & { type: RaceResultsService };
|
||||
export const RACE_STEWARDING_SERVICE_TOKEN = Symbol.for('Service.RaceStewarding') as symbol & { type: RaceStewardingService };
|
||||
|
||||
export const SPONSOR_SERVICE_TOKEN = Symbol.for('Service.Sponsor');
|
||||
export const SPONSOR_SERVICE_TOKEN = Symbol.for('Service.Sponsor') as symbol & { type: SponsorService };
|
||||
|
||||
export const PAYMENT_SERVICE_TOKEN = Symbol.for('Service.Payment');
|
||||
export const WALLET_SERVICE_TOKEN = Symbol.for('Service.Wallet');
|
||||
@@ -58,19 +71,20 @@ export const MEDIA_SERVICE_TOKEN = Symbol.for('Service.Media');
|
||||
export const AUTH_SERVICE_TOKEN = Symbol.for('Service.Auth') as symbol & { type: AuthService };
|
||||
export const SESSION_SERVICE_TOKEN = Symbol.for('Service.Session') as symbol & { type: SessionService };
|
||||
|
||||
export const PENALTY_SERVICE_TOKEN = Symbol.for('Service.Penalty');
|
||||
export const PENALTY_SERVICE_TOKEN = Symbol.for('Service.Penalty') as symbol & { type: PenaltyService };
|
||||
|
||||
export const POLICY_SERVICE_TOKEN = Symbol.for('Service.Policy');
|
||||
export const POLICY_SERVICE_TOKEN = Symbol.for('Service.Policy') as symbol & { type: PolicyService };
|
||||
|
||||
export const ADMIN_SERVICE_TOKEN = Symbol.for('Service.Admin') as symbol & { type: AdminService };
|
||||
|
||||
// Additional league services
|
||||
export const LEAGUE_SETTINGS_SERVICE_TOKEN = Symbol.for('Service.LeagueSettings');
|
||||
export const LEAGUE_STEWARDING_SERVICE_TOKEN = Symbol.for('Service.LeagueStewarding');
|
||||
export const PROTEST_SERVICE_TOKEN = Symbol.for('Service.Protest');
|
||||
export const RACE_RESULTS_SERVICE_TOKEN = Symbol.for('Service.RaceResults');
|
||||
export const RACE_STEWARDING_SERVICE_TOKEN = Symbol.for('Service.RaceStewarding');
|
||||
export const LANDING_SERVICE_TOKEN = Symbol.for('Service.Landing');
|
||||
export const LEAGUE_SETTINGS_SERVICE_TOKEN = Symbol.for('Service.LeagueSettings') as symbol & { type: LeagueSettingsService };
|
||||
export const LEAGUE_STEWARDING_SERVICE_TOKEN = Symbol.for('Service.LeagueStewarding') as symbol & { type: LeagueStewardingService };
|
||||
export const PROTEST_SERVICE_TOKEN = Symbol.for('Service.Protest') as symbol & { type: ProtestService };
|
||||
|
||||
export const LANDING_SERVICE_TOKEN = Symbol.for('Service.Landing') as symbol & { type: LandingService };
|
||||
|
||||
export const DASHBOARD_SERVICE_TOKEN = Symbol.for('Service.Dashboard') as symbol & { type: DashboardService };
|
||||
|
||||
// Onboarding Services
|
||||
export const ONBOARDING_SERVICE_TOKEN = Symbol.for('Service.Onboarding') as symbol & { type: OnboardingService };
|
||||
Reference in New Issue
Block a user