added really satisfying log messages and made divisions apply correctly
This commit is contained in:
@@ -49,12 +49,14 @@ async function seed() {
|
|||||||
const teamsCSV = readCSV('teams.csv');
|
const teamsCSV = readCSV('teams.csv');
|
||||||
for (const row of teamsCSV) {
|
for (const row of teamsCSV) {
|
||||||
await db.insert(schema.teams).values({ name: row.team_name, color: row.color });
|
await db.insert(schema.teams).values({ name: row.team_name, color: row.color });
|
||||||
|
console.log(` → Team: ${row.team_name} (${row.color})`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- 2. Divisions ---
|
// --- 2. Divisions ---
|
||||||
const divisionsCSV = readCSV('divisions.csv');
|
const divisionsCSV = readCSV('divisions.csv');
|
||||||
for (const row of divisionsCSV) {
|
for (const row of divisionsCSV) {
|
||||||
await db.insert(schema.divisions).values({ name: row.div_name });
|
await db.insert(schema.divisions).values({ name: row.div_name });
|
||||||
|
console.log(` → Division: ${row.div_name}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- 3. Scoring Presets ---
|
// --- 3. Scoring Presets ---
|
||||||
@@ -65,6 +67,7 @@ async function seed() {
|
|||||||
placement: row.placement,
|
placement: row.placement,
|
||||||
points: row.points
|
points: row.points
|
||||||
});
|
});
|
||||||
|
console.log(` → Preset ${row.preset}: placement ${row.placement} = ${row.points}pts`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Maps for dynamic relational lookups
|
// Maps for dynamic relational lookups
|
||||||
@@ -72,6 +75,7 @@ async function seed() {
|
|||||||
const dbDivisions = await db.select().from(schema.divisions);
|
const dbDivisions = await db.select().from(schema.divisions);
|
||||||
const teamMap = new Map(dbTeams.map((t) => [t.name, t.id]));
|
const teamMap = new Map(dbTeams.map((t) => [t.name, t.id]));
|
||||||
const divisionMap = new Map(dbDivisions.map((d) => [d.name, d.id]));
|
const divisionMap = new Map(dbDivisions.map((d) => [d.name, d.id]));
|
||||||
|
const divisionNameMap = new Map([...divisionMap.entries()].map(([name, id]) => [id, name]));
|
||||||
|
|
||||||
// --- 4. Players ---
|
// --- 4. Players ---
|
||||||
const playersCSV = readCSV('players.csv');
|
const playersCSV = readCSV('players.csv');
|
||||||
@@ -86,6 +90,9 @@ async function seed() {
|
|||||||
team: teamId,
|
team: teamId,
|
||||||
division: divisionId || null
|
division: divisionId || null
|
||||||
});
|
});
|
||||||
|
console.log(
|
||||||
|
` → Player: ${row.firstName} ${row.lastName} | team ${teamId} | division ${divisionId}`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- 5. Event Types ---
|
// --- 5. Event Types ---
|
||||||
@@ -95,6 +102,7 @@ async function seed() {
|
|||||||
name: row.event_name,
|
name: row.event_name,
|
||||||
preset: row.preset
|
preset: row.preset
|
||||||
});
|
});
|
||||||
|
console.log(` → Event Type: ${row.event_name} (preset ${row.preset})`);
|
||||||
}
|
}
|
||||||
|
|
||||||
const dbEventTypes = await db.select().from(schema.eventTypes);
|
const dbEventTypes = await db.select().from(schema.eventTypes);
|
||||||
@@ -121,30 +129,36 @@ async function seed() {
|
|||||||
timeCompleted: row.time_completed || null
|
timeCompleted: row.time_completed || null
|
||||||
})
|
})
|
||||||
.returning();
|
.returning();
|
||||||
|
console.log(` → Registered Event [id:${inserted.id}]: ${row.event_type} | ${row.division}`);
|
||||||
|
|
||||||
// Map the textual event name (e.g., "100m Sprint") to the generated DB ID
|
// Map the textual event name (e.g., "100m Sprint") to the generated DB ID
|
||||||
eventNameMap.set(row.event_type, inserted.id);
|
eventNameMap.set(`${row.event_type}|${row.division}`, inserted.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- 7. Registered Players ---
|
// --- 7. Registered Players ---
|
||||||
const dbPlayers = await db.select().from(schema.players);
|
const dbPlayers = await db.select().from(schema.players);
|
||||||
const playerMap = new Map(dbPlayers.map((p) => [`${p.firstName} ${p.lastName}`, p.id]));
|
const playerMap = new Map(dbPlayers.map((p) => [`${p.firstName} ${p.lastName}`, p]));
|
||||||
|
|
||||||
const registeredPlayersCSV = readCSV('registeredPlayers.csv');
|
const registeredPlayersCSV = readCSV('registeredPlayers.csv');
|
||||||
|
|
||||||
for (const row of registeredPlayersCSV) {
|
for (const row of registeredPlayersCSV) {
|
||||||
const playerId = playerMap.get(row.player_registered);
|
const player = playerMap.get(row.player_registered);
|
||||||
// Look up using the string event name now
|
const divisionName = divisionNameMap.get(player?.division ?? -1);
|
||||||
const actualEventId = eventNameMap.get(row.event_registered);
|
const actualEventId = eventNameMap.get(`${row.event_registered}|${divisionName}`);
|
||||||
|
|
||||||
if (!playerId) throw new Error(`Player "${row.player_registered}" not found`);
|
if (!player) throw new Error(`Player "${row.player_registered}" not found`);
|
||||||
if (!actualEventId)
|
if (!actualEventId)
|
||||||
throw new Error(`Registered Event named "${row.event_registered}" not found`);
|
throw new Error(
|
||||||
|
`Registered Event "${row.event_registered}" for division "${divisionName}" not found`
|
||||||
|
);
|
||||||
|
|
||||||
await db.insert(schema.registeredPlayers).values({
|
await db.insert(schema.registeredPlayers).values({
|
||||||
playerID: playerId,
|
playerID: player.id,
|
||||||
registeredEventID: actualEventId,
|
registeredEventID: actualEventId,
|
||||||
placement: row.player_placement || 0
|
placement: row.player_placement || 0
|
||||||
});
|
});
|
||||||
|
console.log(
|
||||||
|
` → Registered Player: ${row.player_registered} → ${row.event_registered} (division: ${divisionName}) [eventId:${actualEventId}]`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Re-enable Foreign Key constraints now that the data is built cleanly
|
// Re-enable Foreign Key constraints now that the data is built cleanly
|
||||||
|
|||||||
Reference in New Issue
Block a user