had opencode clean up all my nonsense comments too
This commit is contained in:
@@ -28,7 +28,7 @@ function readCSV(filename: string): Record<string, any>[] {
|
||||
async function seed() {
|
||||
console.log('Resetting database...');
|
||||
|
||||
// Disable foreign keys globally during setup to prevent structural mismatches
|
||||
// Temporarily disable FK checks during reset
|
||||
await client.execute('PRAGMA foreign_keys = OFF');
|
||||
|
||||
await db.delete(schema.scoreLedger);
|
||||
@@ -55,28 +55,28 @@ async function seed() {
|
||||
.insert(schema.scorers)
|
||||
.values({ id: crypto.randomUUID(), username: 'admin', passwordHash: passwordHash });
|
||||
|
||||
// --- 1. Teams ---
|
||||
// Seed teams
|
||||
const teamsCSV = readCSV('teams.csv');
|
||||
for (const row of teamsCSV) {
|
||||
await db.insert(schema.teams).values({ name: row.team_name, color: row.color });
|
||||
console.log(` → Team: ${row.team_name} (${row.color})`);
|
||||
}
|
||||
|
||||
// --- 2. Divisions ---
|
||||
// Seed divisions
|
||||
const divisionsCSV = readCSV('divisions.csv');
|
||||
for (const row of divisionsCSV) {
|
||||
await db.insert(schema.divisions).values({ name: row.div_name });
|
||||
console.log(` → Division: ${row.div_name}`);
|
||||
}
|
||||
|
||||
// --- 2.5 Brackets (Added Section) ---
|
||||
// Seed brackets
|
||||
const bracketsCSV = readCSV('brackets.csv');
|
||||
for (const row of bracketsCSV) {
|
||||
await db.insert(schema.brackets).values({ name: row.bracket_name });
|
||||
console.log(` → Bracket: ${row.bracket_name}`);
|
||||
}
|
||||
|
||||
// --- 2.75 resultPresets ---
|
||||
// Seed result presets
|
||||
const resultPresetsCSV = readCSV('resultPresets.csv');
|
||||
for (const row of resultPresetsCSV) {
|
||||
await db.insert(schema.resultPresets).values({
|
||||
@@ -91,7 +91,7 @@ async function seed() {
|
||||
);
|
||||
}
|
||||
|
||||
// --- 3. Scoring Presets ---
|
||||
// Seed scoring presets
|
||||
const scoringPresetsCSV = readCSV('scoringPresets.csv');
|
||||
for (const row of scoringPresetsCSV) {
|
||||
await db.insert(schema.scoringPresets).values({
|
||||
@@ -102,19 +102,19 @@ async function seed() {
|
||||
console.log(` → Preset ${row.preset}: placement ${row.placement} = ${row.points}pts`);
|
||||
}
|
||||
|
||||
// Maps for dynamic relational lookups
|
||||
// Build lookup maps for relational seeding
|
||||
const dbTeams = await db.select().from(schema.teams);
|
||||
const dbDivisions = await db.select().from(schema.divisions);
|
||||
const dbResults = await db.select().from(schema.resultPresets);
|
||||
const dbBrackets = await db.select().from(schema.brackets); // Look up newly seeded brackets
|
||||
const dbBrackets = await db.select().from(schema.brackets);
|
||||
|
||||
const teamMap = new Map(dbTeams.map((t) => [t.name, t.id]));
|
||||
const divisionMap = new Map(dbDivisions.map((d) => [d.name, d.id]));
|
||||
const divisionNameMap = new Map([...divisionMap.entries()].map(([name, id]) => [id, name]));
|
||||
const bracketMap = new Map(dbBrackets.map((b) => [b.name, b.id])); // Map names to IDs
|
||||
const resultPresetMap = new Map(dbResults.map((b) => [b.presetName, b.id])); // Map names to IDs
|
||||
const bracketMap = new Map(dbBrackets.map((b) => [b.name, b.id]));
|
||||
const resultPresetMap = new Map(dbResults.map((b) => [b.presetName, b.id]));
|
||||
|
||||
// --- 4. Players ---
|
||||
// Seed players
|
||||
const playersCSV = readCSV('players.csv');
|
||||
for (const row of playersCSV) {
|
||||
const teamId = teamMap.get(row.team);
|
||||
@@ -132,7 +132,7 @@ async function seed() {
|
||||
);
|
||||
}
|
||||
|
||||
// --- 5. Event Types ---
|
||||
// Seed event types
|
||||
const eventTypesCSV = readCSV('eventTypes.csv');
|
||||
for (const row of eventTypesCSV) {
|
||||
const presetId = resultPresetMap.get(row.resultPreset);
|
||||
@@ -150,7 +150,7 @@ async function seed() {
|
||||
const dbEventTypes = await db.select().from(schema.eventTypes);
|
||||
const eventTypeMap = new Map(dbEventTypes.map((et) => [et.name, et.id]));
|
||||
|
||||
// --- 6. Registered Events ---
|
||||
// Seed registered events
|
||||
const eventNameMap = new Map<string, number>();
|
||||
const registeredEventsCSV = readCSV('registeredEvents.csv');
|
||||
|
||||
@@ -176,11 +176,11 @@ async function seed() {
|
||||
` → Registered Event [id:${inserted.id}]: ${row.event_type} | ${row.division}, winner: ${teamId}, ${row.winner}`
|
||||
);
|
||||
|
||||
// Map the textual event name (e.g., "100m Sprint") to the generated DB ID
|
||||
// Map event name|division to the generated event ID
|
||||
eventNameMap.set(`${row.event_type}|${row.division}`, inserted.id);
|
||||
}
|
||||
|
||||
// --- 7. Registered Players ---
|
||||
// Seed registered players (linking players to events)
|
||||
const dbPlayers = await db.select().from(schema.players);
|
||||
const playerMap = new Map(dbPlayers.map((p) => [`${p.firstName} ${p.lastName}`, p]));
|
||||
|
||||
@@ -190,7 +190,6 @@ async function seed() {
|
||||
const divisionName = divisionNameMap.get(player?.division ?? -1);
|
||||
const actualEventId = eventNameMap.get(`${row.event_registered}|${divisionName}`);
|
||||
|
||||
// Dynamic look up of the bracket row's primary key ID using the CSV text
|
||||
const bracketId = bracketMap.get(row.bracket);
|
||||
|
||||
if (!player) throw new Error(`Player "${row.player_registered}" not found`);
|
||||
@@ -203,7 +202,7 @@ async function seed() {
|
||||
await db.insert(schema.registeredPlayers).values({
|
||||
playerID: player.id,
|
||||
registeredEventID: actualEventId,
|
||||
bracket: bracketId, // Using the real relational ID instead of raw value
|
||||
bracket: bracketId,
|
||||
placement: row.player_placement || 0
|
||||
});
|
||||
console.log(
|
||||
@@ -211,7 +210,7 @@ async function seed() {
|
||||
);
|
||||
}
|
||||
|
||||
// Re-enable Foreign Key constraints now that the data is built cleanly
|
||||
// Re-enable FK checks
|
||||
await client.execute('PRAGMA foreign_keys = ON');
|
||||
|
||||
console.log('\n✅ Seeding complete!');
|
||||
|
||||
Reference in New Issue
Block a user