From 51d44afb9d475ac39f3c7f9f2ff59a55d7ac9b37 Mon Sep 17 00:00:00 2001 From: voidarc Date: Sat, 23 May 2026 20:15:34 +0100 Subject: [PATCH] new eventmanager functions for the new view i made --- src/lib/server/eventManager.ts | 68 +++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 29 deletions(-) diff --git a/src/lib/server/eventManager.ts b/src/lib/server/eventManager.ts index 6391a25..fba1d2a 100644 --- a/src/lib/server/eventManager.ts +++ b/src/lib/server/eventManager.ts @@ -1,5 +1,6 @@ import { EventEmitter } from 'node:events'; import { db } from '$lib/server/db'; +import { eq } from 'drizzle-orm'; import * as schema from '$lib/server/db/schema'; let testScore = 0; @@ -17,6 +18,14 @@ const increment = () => { // Increment scores when there is an emit globalEmitter.on('incrementScores', increment); +// For page.server.ts so that it doesnt look weird before loading +export async function getAllInitialInfo() { + return { + teams: await getTeams(), + events: await getRegisteredEvents() + }; +} + // Get teams object from database export async function getTeams() { const allTeams = await db.select().from(schema.teamScoresView); @@ -29,36 +38,37 @@ export async function getTeams() { }; } -export async function getPlayers() { - // 1. Fetch the view records, divisions, and events all at once - const [allPlayers, allDivisions, allEvents] = await Promise.all([ - db.select().from(schema.playerDetailsView), - db.select().from(schema.divisions), - db.select().from(schema.events) - ]); - - // 2. Build quick key/value lookup maps for IDs to names - const divisionMap = new Map(allDivisions.map((d) => [d.id, d.name])); - const eventMap = new Map(allEvents.map((e) => [e.id, e.name])); - - // 3. Return your original cleanly mapped data structure +// Get all registered events from database +export async function getRegisteredEvents() { + const allEvents = await db.select().from(schema.registeredEventsView); return { - teams: allPlayers.map((player) => ({ - ID: player.playerId, - firstName: player.firstName, - lastName: player.lastName, - teamID: player.teamID, - teamName: player.teamName, - teamColor: player.teamColor, - - // Map division name safely - divisionName: player.divisionId - ? divisionMap.get(player.divisionId) || 'Unknown Division' - : 'No Division', - - // Map event name safely (fixing the team name leak!) - eventName: player.eventId ? eventMap.get(player.eventId) || 'No Event' : 'No Event', - eventID: player.eventId + events: allEvents.map((events) => ({ + id: events.eventId, + name: events.eventName, + division: events.division, + state: events.state, + completed: events.timeCompleted || 0 + })) + }; +} + +// Get all players with an event id specified +export async function getAllRegisteredEventPlayers(eventId: number) { + const eventPlayers = await db + .select() + .from(schema.registeredEventPlayersView) + .where(eq(schema.registeredEventPlayersView.eventId, eventId)); + return { + eventPlayers: eventPlayers.map((players) => ({ + id: players.playerId, + firstName: players.firstName, + lastName: players.lastName, + placement: players.placement, + eventId: players.eventId, + eventName: players.eventName, + teamId: players.teamId, + teamName: players.teamName, + teamColor: players.teamColor })) }; }