This commit is contained in:
2025-12-13 11:43:09 +01:00
parent 4b6fc668b5
commit bb0497f429
38 changed files with 3838 additions and 55 deletions

View File

@@ -96,7 +96,8 @@ export function createLeagues(ownerIds: string[]): League[] {
for (let i = 0; i < leagueCount; i++) {
const id = `league-${i + 1}`;
const name = leagueNames[i] ?? faker.company.name();
const ownerId = pickOne(ownerIds);
// Ensure league-5 (demo league with running race) is owned by driver-1
const ownerId = i === 4 ? 'driver-1' : pickOne(ownerIds);
const maxDriversOptions = [24, 32, 48, 64];
let settings = {
@@ -209,6 +210,7 @@ export function createMemberships(
teamsByLeague.set(team.primaryLeagueId, list);
});
drivers.forEach((driver) => {
// Each driver participates in 13 leagues
const leagueSampleSize = faker.number.int({ min: 1, max: Math.min(3, leagues.length) });
@@ -264,10 +266,24 @@ export function createRaces(leagues: League[]): Race[] {
for (let i = 0; i < raceCount; i++) {
const id = `race-${i + 1}`;
const league = pickOne(leagues);
let league = pickOne(leagues);
const offsetDays = faker.number.int({ min: -30, max: 45 });
const scheduledAt = new Date(baseDate.getTime() + offsetDays * 24 * 60 * 60 * 1000);
const status = scheduledAt.getTime() < baseDate.getTime() ? 'completed' : 'scheduled';
let status: 'scheduled' | 'completed' | 'running' = scheduledAt.getTime() < baseDate.getTime() ? 'completed' : 'scheduled';
let strengthOfField: number | undefined;
// Special case: Make race-1 a running race in league-5 (user's admin league)
if (i === 0) {
const league5 = leagues.find(l => l.id === 'league-5');
if (league5) {
league = league5;
status = 'running';
// Calculate SOF for the running race (simulate 12-20 drivers with average rating ~1500)
const participantCount = faker.number.int({ min: 12, max: 20 });
const averageRating = 1500 + faker.number.int({ min: -200, max: 300 });
strengthOfField = Math.round(averageRating);
}
}
races.push(
Race.create({
@@ -278,6 +294,8 @@ export function createRaces(leagues: League[]): Race[] {
car: faker.helpers.arrayElement(cars),
sessionType: 'race',
status,
...(strengthOfField !== undefined ? { strengthOfField } : {}),
...(status === 'running' ? { registeredCount: faker.number.int({ min: 12, max: 20 }) } : {}),
}),
);
}