more seeds
This commit is contained in:
@@ -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());
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user