moved eventManager to databaseManager and started prep for caching

This commit is contained in:
2026-05-25 21:56:46 +01:00
parent 7f4f37608c
commit 0d0c4824de
5 changed files with 94 additions and 6 deletions

View File

@@ -0,0 +1,24 @@
import * as database from './databaseManager.ts';
import { globalEmitter } from './databaseManager.ts';
// TODO Implement caching of info at some point
// structure:
// databaseManager gets raw data from backend
// stored in variables in cacheManager
// sent to frontend using same function names in dataManager (not made)
let teamsCache;
export async function updateTeamsCache() {
teamsCache = database.getTeams();
}
globalEmitter.on('invalTeamsCache', updateTeamsCache);
let eventsCache;
export async function updateEventsCache() {
eventsCache = database.getRegisteredEvents();
}
globalEmitter.on('invalEventsCache', updateEventsCache);

View File

@@ -43,15 +43,21 @@ export async function getTeams() {
}
// Get all registered events from database
export async function getRegisteredEvents() {
const allEvents = await db.select().from(schema.registeredEventsView);
export async function getRegisteredEvents(eventId?: number) {
console.log('eventId: ', eventId);
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) => ({
id: events.eventId,
name: events.eventName,
division: events.division,
state: events.state,
completed: events.timeCompleted || 0
completed: events.timeCompleted || 0,
resultPreset: events.resultPreset
}))
};
}
@@ -61,6 +67,7 @@ export async function getAllRegisteredEventPlayers(eventId: number) {
const eventPlayers = await db
.select()
.from(schema.registeredEventPlayersView)
// where the registered player is registered for that event
.where(eq(schema.registeredEventPlayersView.eventId, eventId))
.orderBy(
schema.registeredEventPlayersView.bracket,
@@ -90,3 +97,60 @@ export async function getAllBrackets() {
brackets: brackets
};
}
export async function getResultPreset(presetId: number) {
const resultPresets = await db
.select()
.from(schema.resultPresets)
.where(eq(schema.resultPresets.id, presetId));
return {
resultPresets: resultPresets
};
}
// Moved the function the registeredEvents endpoint
// Just merges the results of the previous 3 functions into a standard format
export async function getRegisteredEventsWithPlayers(eventId?: number) {
// Get updated events from database
let newEvents = await getRegisteredEvents(eventId);
let registeredEventList = newEvents['events'];
// Get all possible brackets from the database
let brackets = await getAllBrackets();
// Initilise the final eventList
let fullEventList: any[] = [];
// For every event
for (let registeredEvent in registeredEventList) {
let event = registeredEventList[registeredEvent];
// Get the info about the result preset for the ui
let resultPreset = await getResultPreset(event.resultPreset);
// Get all players for the event
let registeredPlayers = await getAllRegisteredEventPlayers(event.id);
// Map the players into an [] with structure {id: number, name: string, items: any[]}
// So that the players are sorted by bracket for the frontend
const bracketOrder = brackets.brackets.map((category) => {
return {
...category,
// Filter the items that match the current bracket name
items: registeredPlayers.eventPlayers.filter((item) => item.bracket === category.name)
};
});
// append the player info and result preset to the event object
let eventWithPlayers = {
...event,
registeredPlayers: bracketOrder,
...resultPreset
};
// combine all of the events into one array
fullEventList.push(eventWithPlayers);
}
// Send to client
return fullEventList;
}

View File

@@ -1,4 +1,4 @@
import { getAllInitialInfo } from '$lib/server/eventManager';
import { getAllInitialInfo } from '$lib/server/databaseManager';
// Literally only here so that the frontend has the right structure
export const load = async () => {

View File

@@ -1,4 +1,4 @@
import { globalEmitter, getAllRegisteredEventPlayers } from '$lib/server/eventManager';
import { globalEmitter, getAllRegisteredEventPlayers } from '$lib/server/databaseManager';
import { generateEndpoint } from '$lib/server/endpoint';
// Expose post request

View File

@@ -1,4 +1,4 @@
import { globalEmitter, getTeams } from '$lib/server/eventManager';
import { globalEmitter, getTeams } from '$lib/server/databaseManager';
import { generateEndpoint } from '$lib/server/endpoint';
// Expose post request