new eventmanager functions for the new view i made
This commit is contained in:
@@ -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
|
||||||
}))
|
}))
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user