more seeds

This commit is contained in:
2025-12-27 02:00:17 +01:00
parent 15435c93fc
commit 58d9a1c762
4 changed files with 258 additions and 38 deletions

View File

@@ -38,9 +38,35 @@ export class RacingTeamFactory {
const memberships: TeamMembership[] = [];
const usedDrivers = new Set<string>();
teams.forEach((team) => {
teams.forEach((team, teamIndex) => {
const availableDrivers = drivers.filter(d => !usedDrivers.has(d.id.toString()) && d.id.toString() !== team.ownerId.toString());
const memberCount = faker.number.int({ min: 1, max: 8 });
// Create varied team compositions
let memberCount: number;
let hasManager: boolean;
if (teamIndex % 5 === 0) {
// Solo teams (just owner)
memberCount = 0;
hasManager = false;
} else if (teamIndex % 5 === 1) {
// Small teams (2-3 members)
memberCount = faker.number.int({ min: 1, max: 2 });
hasManager = faker.datatype.boolean();
} else if (teamIndex % 5 === 2) {
// Medium teams (3-5 members)
memberCount = faker.number.int({ min: 2, max: 4 });
hasManager = true;
} else if (teamIndex % 5 === 3) {
// Large teams (5-7 members)
memberCount = faker.number.int({ min: 4, max: 6 });
hasManager = true;
} else {
// Mixed - sometimes with manager, sometimes without
memberCount = faker.number.int({ min: 1, max: 5 });
hasManager = faker.datatype.boolean();
}
const members = faker.helpers.arrayElements(availableDrivers, memberCount);
// Add owner
@@ -53,16 +79,32 @@ export class RacingTeamFactory {
});
usedDrivers.add(team.ownerId.toString());
// Add members
members.forEach((driver) => {
// Add manager if needed
if (hasManager && members.length > 0) {
const managerIndex = faker.number.int({ min: 0, max: members.length - 1 });
const manager = members[managerIndex]!;
memberships.push({
teamId: team.id.toString(),
driverId: driver.id.toString(),
role: faker.helpers.arrayElement(['driver', 'manager']),
driverId: manager.id.toString(),
role: 'manager',
status: 'active',
joinedAt: faker.date.past({ years: 1, refDate: team.createdAt.toDate() }),
});
usedDrivers.add(driver.id.toString());
usedDrivers.add(manager.id.toString());
}
// Add remaining members as drivers
members.forEach((driver) => {
if (!usedDrivers.has(driver.id.toString())) {
memberships.push({
teamId: team.id.toString(),
driverId: driver.id.toString(),
role: 'driver',
status: 'active',
joinedAt: faker.date.past({ years: 1, refDate: team.createdAt.toDate() }),
});
usedDrivers.add(driver.id.toString());
}
});
});