moved eventManager to databaseManager and started prep for caching
This commit is contained in:
24
src/lib/server/cacheManager.ts
Normal file
24
src/lib/server/cacheManager.ts
Normal 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);
|
||||||
@@ -43,15 +43,21 @@ export async function getTeams() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get all registered events from database
|
// Get all registered events from database
|
||||||
export async function getRegisteredEvents() {
|
export async function getRegisteredEvents(eventId?: number) {
|
||||||
const allEvents = await db.select().from(schema.registeredEventsView);
|
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 {
|
return {
|
||||||
events: allEvents.map((events) => ({
|
events: allEvents.map((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
|
||||||
}))
|
}))
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -61,6 +67,7 @@ export async function getAllRegisteredEventPlayers(eventId: number) {
|
|||||||
const eventPlayers = await db
|
const eventPlayers = await db
|
||||||
.select()
|
.select()
|
||||||
.from(schema.registeredEventPlayersView)
|
.from(schema.registeredEventPlayersView)
|
||||||
|
// where the registered player is registered for that event
|
||||||
.where(eq(schema.registeredEventPlayersView.eventId, eventId))
|
.where(eq(schema.registeredEventPlayersView.eventId, eventId))
|
||||||
.orderBy(
|
.orderBy(
|
||||||
schema.registeredEventPlayersView.bracket,
|
schema.registeredEventPlayersView.bracket,
|
||||||
@@ -90,3 +97,60 @@ export async function getAllBrackets() {
|
|||||||
brackets: brackets
|
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;
|
||||||
|
}
|
||||||
@@ -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
|
// Literally only here so that the frontend has the right structure
|
||||||
export const load = async () => {
|
export const load = async () => {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { globalEmitter, getAllRegisteredEventPlayers } from '$lib/server/eventManager';
|
import { globalEmitter, getAllRegisteredEventPlayers } from '$lib/server/databaseManager';
|
||||||
import { generateEndpoint } from '$lib/server/endpoint';
|
import { generateEndpoint } from '$lib/server/endpoint';
|
||||||
|
|
||||||
// Expose post request
|
// Expose post request
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { globalEmitter, getTeams } from '$lib/server/eventManager';
|
import { globalEmitter, getTeams } from '$lib/server/databaseManager';
|
||||||
import { generateEndpoint } from '$lib/server/endpoint';
|
import { generateEndpoint } from '$lib/server/endpoint';
|
||||||
|
|
||||||
// Expose post request
|
// Expose post request
|
||||||
|
|||||||
Reference in New Issue
Block a user