added the winner to events from database, and then made that available through dbm

This commit is contained in:
2026-05-30 16:14:22 +01:00
parent 95fac2070a
commit 7d16e45e4a
2 changed files with 22 additions and 9 deletions

View File

@@ -11,8 +11,11 @@ export async function getAllInitialInfo() {
} }
// Get teams object from database // Get teams object from database
export async function getTeams() { export async function getTeams(teamId?: number) {
const allTeams = await db.select().from(schema.teamScoresView); const allTeams = await db
.select()
.from(schema.teamScoresView)
.where(teamId ? eq(schema.teamScoresView.teamId, teamId) : undefined);
for (let team in allTeams) { for (let team in allTeams) {
let currentTeam = allTeams[team]; let currentTeam = allTeams[team];
if (!currentTeam.totalPoints) { if (!currentTeam.totalPoints) {
@@ -30,21 +33,29 @@ export async function getTeams() {
// Get all registered events from database // Get all registered events from database
export async function getRegisteredEvents(eventId?: number) { export async function getRegisteredEvents(eventId?: number) {
async function getWinnerInfo(teamId: number) {
const teamInfo = await getTeams(teamId);
return teamInfo.teams[0];
}
const allEvents = await db const allEvents = await db
.select() .select()
.from(schema.registeredEventsView) .from(schema.registeredEventsView)
// If event id specified, get that event, otherwise get all events
.where(eventId ? eq(schema.registeredEventsView.eventId, eventId) : undefined); .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, id: events.eventId,
name: events.eventName, name: events.eventName,
division: events.division, division: events.division,
state: events.state, state: events.state,
completed: events.timeCompleted || 0, 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 // Get all players with an event id specified

View File

@@ -63,7 +63,8 @@ export const registeredEvents = sqliteTable('registeredEvents', {
.references(() => divisions.id) .references(() => divisions.id)
.notNull(), .notNull(),
state: integer('event_state').notNull().default(0), 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', { export const registeredPlayers = sqliteTable('registeredPlayers', {
@@ -131,11 +132,12 @@ export const registeredEventsView = sqliteView('registeredEventsView').as((qb) =
division: divisions.name, division: divisions.name,
state: registeredEvents.state, state: registeredEvents.state,
timeCompleted: registeredEvents.timeCompleted, timeCompleted: registeredEvents.timeCompleted,
winner: registeredEvents.teamWinner,
resultPreset: eventTypes.resultPreset resultPreset: eventTypes.resultPreset
}) })
.from(registeredEvents) .from(registeredEvents)
.innerJoin(eventTypes, eq(registeredEvents.eventType, eventTypes.id)) .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) => { export const registeredEventPlayersView = sqliteView('registeredEventPlayersView').as((qb) => {