website refactor
This commit is contained in:
@@ -4,40 +4,65 @@ import { Result } from '@core/racing/domain/entities/result/Result';
|
||||
import type { Season } from '@core/racing/domain/entities/season/Season';
|
||||
import { Standing } from '@core/racing/domain/entities/Standing';
|
||||
import { Team } from '@core/racing/domain/entities/Team';
|
||||
import type { TeamStats } from '@core/racing/domain/repositories/TeamStatsRepository';
|
||||
import type { DriverRepository } from '@core/racing/domain/repositories/DriverRepository';
|
||||
import type { LeagueRepository } from '@core/racing/domain/repositories/LeagueRepository';
|
||||
import type { SeasonRepository } from '@core/racing/domain/repositories/SeasonRepository';
|
||||
import type { LeagueScoringConfigRepository } from '@core/racing/domain/repositories/LeagueScoringConfigRepository';
|
||||
import type { SeasonSponsorshipRepository } from '@core/racing/domain/repositories/SeasonSponsorshipRepository';
|
||||
import type { SponsorshipRequestRepository } from '@core/racing/domain/repositories/SponsorshipRequestRepository';
|
||||
import type { LeagueWalletRepository } from '@core/racing/domain/repositories/LeagueWalletRepository';
|
||||
import type { TransactionRepository } from '@core/racing/domain/repositories/TransactionRepository';
|
||||
import type { ProtestRepository } from '@core/racing/domain/repositories/ProtestRepository';
|
||||
import type { PenaltyRepository } from '@core/racing/domain/repositories/PenaltyRepository';
|
||||
import type { RaceRepository } from '@core/racing/domain/repositories/RaceRepository';
|
||||
import type { ResultRepository } from '@core/racing/domain/repositories/ResultRepository';
|
||||
import type { StandingRepository } from '@core/racing/domain/repositories/StandingRepository';
|
||||
import type { LeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
|
||||
import type { RaceRegistrationRepository } from '@core/racing/domain/repositories/RaceRegistrationRepository';
|
||||
import type { TeamRepository } from '@core/racing/domain/repositories/TeamRepository';
|
||||
import type { TeamMembershipRepository } from '@core/racing/domain/repositories/TeamMembershipRepository';
|
||||
import type { SponsorRepository } from '@core/racing/domain/repositories/SponsorRepository';
|
||||
import type { FeedRepository } from '@core/social/domain/repositories/FeedRepository';
|
||||
import type { SocialGraphRepository } from '@core/social/domain/repositories/SocialGraphRepository';
|
||||
import type { DriverStatsRepository } from '@core/racing/domain/repositories/DriverStatsRepository';
|
||||
import type { TeamStatsRepository, TeamStats } from '@core/racing/domain/repositories/TeamStatsRepository';
|
||||
import type { MediaRepository } from '@core/racing/domain/repositories/MediaRepository';
|
||||
import type { AuthRepository } from '@core/identity/domain/repositories/AuthRepository';
|
||||
import type { PasswordHashingService } from '@core/identity/domain/services/PasswordHashingService';
|
||||
import type { AdminUserRepository } from '@core/admin/domain/repositories/AdminUserRepository';
|
||||
import type { Logger } from '@core/shared/domain/Logger';
|
||||
import { getLeagueScoringPresetById } from './LeagueScoringPresets';
|
||||
import { createRacingSeed } from './racing/RacingSeed';
|
||||
import { seedId } from './racing/SeedIdHelper';
|
||||
|
||||
export type RacingSeedDependencies = {
|
||||
driverRepository: IDriverRepository;
|
||||
leagueRepository: ILeagueRepository;
|
||||
seasonRepository: ISeasonRepository;
|
||||
leagueScoringConfigRepository: ILeagueScoringConfigRepository;
|
||||
seasonSponsorshipRepository: ISeasonSponsorshipRepository;
|
||||
sponsorshipRequestRepository: ISponsorshipRequestRepository;
|
||||
leagueWalletRepository: ILeagueWalletRepository;
|
||||
transactionRepository: ITransactionRepository;
|
||||
protestRepository: IProtestRepository;
|
||||
penaltyRepository: IPenaltyRepository;
|
||||
raceRepository: IRaceRepository;
|
||||
resultRepository: IResultRepository;
|
||||
standingRepository: IStandingRepository;
|
||||
leagueMembershipRepository: ILeagueMembershipRepository;
|
||||
raceRegistrationRepository: IRaceRegistrationRepository;
|
||||
teamRepository: ITeamRepository;
|
||||
teamMembershipRepository: ITeamMembershipRepository;
|
||||
sponsorRepository: ISponsorRepository;
|
||||
feedRepository: IFeedRepository;
|
||||
socialGraphRepository: ISocialGraphRepository;
|
||||
driverStatsRepository: IDriverStatsRepository;
|
||||
teamStatsRepository: ITeamStatsRepository;
|
||||
mediaRepository: IMediaRepository;
|
||||
driverRepository: DriverRepository;
|
||||
leagueRepository: LeagueRepository;
|
||||
seasonRepository: SeasonRepository;
|
||||
leagueScoringConfigRepository: LeagueScoringConfigRepository;
|
||||
seasonSponsorshipRepository: SeasonSponsorshipRepository;
|
||||
sponsorshipRequestRepository: SponsorshipRequestRepository;
|
||||
leagueWalletRepository: LeagueWalletRepository;
|
||||
transactionRepository: TransactionRepository;
|
||||
protestRepository: ProtestRepository;
|
||||
penaltyRepository: PenaltyRepository;
|
||||
raceRepository: RaceRepository;
|
||||
resultRepository: ResultRepository;
|
||||
standingRepository: StandingRepository;
|
||||
leagueMembershipRepository: LeagueMembershipRepository;
|
||||
raceRegistrationRepository: RaceRegistrationRepository;
|
||||
teamRepository: TeamRepository;
|
||||
teamMembershipRepository: TeamMembershipRepository;
|
||||
sponsorRepository: SponsorRepository;
|
||||
feedRepository: FeedRepository;
|
||||
socialGraphRepository: SocialGraphRepository;
|
||||
driverStatsRepository: DriverStatsRepository;
|
||||
teamStatsRepository: TeamStatsRepository;
|
||||
mediaRepository: MediaRepository;
|
||||
// Identity dependencies for demo user seed
|
||||
authRepository: IAuthRepository;
|
||||
passwordHashingService: IPasswordHashingService;
|
||||
adminUserRepository: IAdminUserRepository;
|
||||
authRepository: AuthRepository;
|
||||
passwordHashingService: PasswordHashingService;
|
||||
adminUserRepository: AdminUserRepository;
|
||||
};
|
||||
|
||||
export class SeedRacingData {
|
||||
@@ -280,7 +305,7 @@ export class SeedRacingData {
|
||||
// ignore duplicates
|
||||
}
|
||||
|
||||
const seedableFeed = this.seedDeps.feedRepository as unknown as { seed?: (input: unknown) => void };
|
||||
const seedableFeed = this.seedDeps.feedRepository as unknown as { seed?: (input: any) => void };
|
||||
if (typeof seedableFeed.seed === 'function') {
|
||||
seedableFeed.seed({
|
||||
drivers: seed.drivers,
|
||||
@@ -289,7 +314,7 @@ export class SeedRacingData {
|
||||
});
|
||||
}
|
||||
|
||||
const seedableSocial = this.seedDeps.socialGraphRepository as unknown as { seed?: (input: unknown) => void };
|
||||
const seedableSocial = this.seedDeps.socialGraphRepository as unknown as { seed?: (input: any) => void };
|
||||
if (typeof seedableSocial.seed === 'function') {
|
||||
seedableSocial.seed({
|
||||
drivers: seed.drivers,
|
||||
@@ -317,8 +342,8 @@ export class SeedRacingData {
|
||||
this.logger.info(`[Bootstrap] Computing stats for ${drivers.length} drivers from ${standings.length} standings and ${results.length} results`);
|
||||
|
||||
for (const driver of drivers) {
|
||||
const driverResults = results.filter(r => r.driverId.toString() === driver.id);
|
||||
const driverStandings = standings.filter(s => s.driverId.toString() === driver.id);
|
||||
const driverResults = results.filter((r: Result) => r.driverId.toString() === driver.id);
|
||||
const driverStandings = standings.filter((s: Standing) => s.driverId.toString() === driver.id);
|
||||
|
||||
if (driverResults.length === 0) continue;
|
||||
|
||||
@@ -398,13 +423,13 @@ export class SeedRacingData {
|
||||
for (const team of teams) {
|
||||
// Get team members using the correct method
|
||||
const teamMemberships = await this.seedDeps.teamMembershipRepository.getTeamMembers(team.id);
|
||||
const teamMemberIds = teamMemberships.map(m => m.driverId.toString());
|
||||
const teamMemberIds = teamMemberships.map((m: any) => m.driverId.toString());
|
||||
|
||||
// Get results for team members
|
||||
const teamResults = results.filter(r => teamMemberIds.includes(r.driverId.toString()));
|
||||
const teamResults = results.filter((r: Result) => teamMemberIds.includes(r.driverId.toString()));
|
||||
|
||||
// Get team drivers for name resolution
|
||||
const teamDrivers = drivers.filter(d => teamMemberIds.includes(d.id));
|
||||
const teamDrivers = drivers.filter((d: Driver) => teamMemberIds.includes(d.id));
|
||||
|
||||
const stats = this.calculateTeamStats(team, teamResults, teamDrivers);
|
||||
await this.seedDeps.teamStatsRepository.saveTeamStats(team.id, stats);
|
||||
|
||||
Reference in New Issue
Block a user