new eventmanager functions for the new view i made

This commit is contained in:
2026-05-23 20:15:34 +01:00
parent bbcb04f882
commit 51d44afb9d

View File

@@ -1,5 +1,6 @@
import { EventEmitter } from 'node:events'; import { EventEmitter } from 'node:events';
import { db } from '$lib/server/db'; import { db } from '$lib/server/db';
import { eq } from 'drizzle-orm';
import * as schema from '$lib/server/db/schema'; import * as schema from '$lib/server/db/schema';
let testScore = 0; let testScore = 0;
@@ -17,6 +18,14 @@ const increment = () => {
// Increment scores when there is an emit // Increment scores when there is an emit
globalEmitter.on('incrementScores', increment); 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 // Get teams object from database
export async function getTeams() { export async function getTeams() {
const allTeams = await db.select().from(schema.teamScoresView); const allTeams = await db.select().from(schema.teamScoresView);
@@ -29,36 +38,37 @@ export async function getTeams() {
}; };
} }
export async function getPlayers() { // Get all registered events from database
// 1. Fetch the view records, divisions, and events all at once export async function getRegisteredEvents() {
const [allPlayers, allDivisions, allEvents] = await Promise.all([ const allEvents = await db.select().from(schema.registeredEventsView);
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
return { return {
teams: allPlayers.map((player) => ({ events: allEvents.map((events) => ({
ID: player.playerId, id: events.eventId,
firstName: player.firstName, name: events.eventName,
lastName: player.lastName, division: events.division,
teamID: player.teamID, state: events.state,
teamName: player.teamName, completed: events.timeCompleted || 0
teamColor: player.teamColor, }))
};
// Map division name safely }
divisionName: player.divisionId
? divisionMap.get(player.divisionId) || 'Unknown Division' // Get all players with an event id specified
: 'No Division', export async function getAllRegisteredEventPlayers(eventId: number) {
const eventPlayers = await db
// Map event name safely (fixing the team name leak!) .select()
eventName: player.eventId ? eventMap.get(player.eventId) || 'No Event' : 'No Event', .from(schema.registeredEventPlayersView)
eventID: player.eventId .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
})) }))
}; };
} }