From 7d16e45e4a029b58e55b193b3ac8741e3faf1038 Mon Sep 17 00:00:00 2001 From: voidarc Date: Sat, 30 May 2026 16:14:22 +0100 Subject: [PATCH] added the winner to events from database, and then made that available through dbm --- src/lib/server/databaseManager.ts | 25 ++++++++++++++++++------- src/lib/server/db/schema.ts | 6 ++++-- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/lib/server/databaseManager.ts b/src/lib/server/databaseManager.ts index 09d4ec8..a57d49e 100644 --- a/src/lib/server/databaseManager.ts +++ b/src/lib/server/databaseManager.ts @@ -11,8 +11,11 @@ export async function getAllInitialInfo() { } // Get teams object from database -export async function getTeams() { - const allTeams = await db.select().from(schema.teamScoresView); +export async function getTeams(teamId?: number) { + const allTeams = await db + .select() + .from(schema.teamScoresView) + .where(teamId ? eq(schema.teamScoresView.teamId, teamId) : undefined); for (let team in allTeams) { let currentTeam = allTeams[team]; if (!currentTeam.totalPoints) { @@ -30,21 +33,29 @@ export async function getTeams() { // Get all registered events from database export async function getRegisteredEvents(eventId?: number) { + async function getWinnerInfo(teamId: number) { + const teamInfo = await getTeams(teamId); + return teamInfo.teams[0]; + } + const allEvents = await db .select() .from(schema.registeredEventsView) - // If event id specified, get that event, otherwise get all events .where(eventId ? eq(schema.registeredEventsView.eventId, eventId) : undefined); - return { - events: allEvents.map((events) => ({ + + const events = await Promise.all( + allEvents.map(async (events) => ({ id: events.eventId, name: events.eventName, division: events.division, state: events.state, completed: events.timeCompleted || 0, - resultPreset: events.resultPreset + resultPreset: events.resultPreset, + winner: events.winner ? await getWinnerInfo(events.winner) : 'UNDECIDED' })) - }; + ); + + return { events }; } // Get all players with an event id specified diff --git a/src/lib/server/db/schema.ts b/src/lib/server/db/schema.ts index 84f59e0..2148468 100644 --- a/src/lib/server/db/schema.ts +++ b/src/lib/server/db/schema.ts @@ -63,7 +63,8 @@ export const registeredEvents = sqliteTable('registeredEvents', { .references(() => divisions.id) .notNull(), state: integer('event_state').notNull().default(0), - timeCompleted: integer('time_completed') + timeCompleted: integer('time_completed'), + teamWinner: integer('event_team_winner').references(() => teams.id) }); export const registeredPlayers = sqliteTable('registeredPlayers', { @@ -131,11 +132,12 @@ export const registeredEventsView = sqliteView('registeredEventsView').as((qb) = division: divisions.name, state: registeredEvents.state, timeCompleted: registeredEvents.timeCompleted, + winner: registeredEvents.teamWinner, resultPreset: eventTypes.resultPreset }) .from(registeredEvents) .innerJoin(eventTypes, eq(registeredEvents.eventType, eventTypes.id)) - .innerJoin(divisions, eq(registeredEvents.division, divisions.id)) + .innerJoin(divisions, eq(registeredEvents.division, divisions.id)); }); export const registeredEventPlayersView = sqliteView('registeredEventPlayersView').as((qb) => {