scoring works omg
This commit is contained in:
@@ -3,6 +3,3 @@ import { EventEmitter } from 'node:events';
|
|||||||
// Main emitter for everything
|
// Main emitter for everything
|
||||||
|
|
||||||
export const globalEmitter = new EventEmitter();
|
export const globalEmitter = new EventEmitter();
|
||||||
|
|
||||||
// Emitter for cache events
|
|
||||||
export const cacheEmitter = new EventEmitter();
|
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
import { globalEmitter } from '$lib/server/globalEmitter';
|
||||||
|
import { eq } from 'drizzle-orm';
|
||||||
|
import { db } from '$lib/server/db';
|
||||||
|
import * as schema from '$lib/server/db/schema';
|
||||||
|
import { getRegisteredEvents } from '$lib/server/databaseManager';
|
||||||
|
|
||||||
export async function POST({ request }: any) {
|
export async function POST({ request }: any) {
|
||||||
// Decode body
|
// Decode body
|
||||||
let responseBody = await request.json();
|
let responseBody = await request.json();
|
||||||
@@ -7,6 +13,67 @@ export async function POST({ request }: any) {
|
|||||||
return new Response('nuh uh');
|
return new Response('nuh uh');
|
||||||
} else {
|
} else {
|
||||||
console.log(JSON.stringify(responseBody));
|
console.log(JSON.stringify(responseBody));
|
||||||
return new Response('ok');
|
if (responseBody.eventId) {
|
||||||
|
// Get the event
|
||||||
|
let eventData = await getRegisteredEvents(responseBody.eventId);
|
||||||
|
let scoringPreset = eventData.events[0].scoringPreset;
|
||||||
|
console.log(scoringPreset);
|
||||||
|
|
||||||
|
// make a new main ledger entry
|
||||||
|
let newLedgerEntry = await db
|
||||||
|
.insert(schema.mainLedger)
|
||||||
|
.values({ registeredEvent: responseBody.eventId })
|
||||||
|
.returning();
|
||||||
|
|
||||||
|
// get the id so i can use it in the sub ledgers
|
||||||
|
let ledgerEntryId = newLedgerEntry[0].id;
|
||||||
|
|
||||||
|
function getPoints(
|
||||||
|
scoringPreset: { placement: number; points: number }[] | string,
|
||||||
|
position: number
|
||||||
|
): number {
|
||||||
|
const preset =
|
||||||
|
typeof scoringPreset === 'string' ? JSON.parse(scoringPreset) : scoringPreset;
|
||||||
|
return (
|
||||||
|
preset.find((s: { placement: number; points: number }) => s.placement === position)
|
||||||
|
?.points ?? 0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// for every bracket and player
|
||||||
|
for (let bracket in responseBody.brackets) {
|
||||||
|
for (let player in responseBody.brackets[bracket].players) {
|
||||||
|
// variable fun
|
||||||
|
let currentPlayer = responseBody.brackets[bracket].players[player];
|
||||||
|
console.log(currentPlayer);
|
||||||
|
let currentPlayerTeam = currentPlayer.teamId;
|
||||||
|
let currentPlayerPosition = currentPlayer.position;
|
||||||
|
|
||||||
|
// If they put in a score
|
||||||
|
if (currentPlayerPosition > 0) {
|
||||||
|
let score = getPoints(scoringPreset, currentPlayerPosition);
|
||||||
|
// If their score is in the preset and they put in a score
|
||||||
|
if (currentPlayer.scores.length > 0) {
|
||||||
|
if (score > 0) {
|
||||||
|
// put the scores on the board baby
|
||||||
|
let newScoreLedgerEntry = await db
|
||||||
|
.insert(schema.scoreLedger)
|
||||||
|
.values({ ledgerID: ledgerEntryId, teamID: currentPlayerTeam, points: score });
|
||||||
|
}
|
||||||
|
let newPlayerPlacement = await db
|
||||||
|
.update(schema.registeredPlayers)
|
||||||
|
.set({ placement: currentPlayerPosition })
|
||||||
|
.where(eq(schema.registeredPlayers.playerID, currentPlayer.id))
|
||||||
|
.returning();
|
||||||
|
console.log(newPlayerPlacement);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Update the frontends
|
||||||
|
globalEmitter.emit('scoreUpdate');
|
||||||
|
// Return a resonse because
|
||||||
|
return new Response('coolsies uh');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -184,7 +184,7 @@
|
|||||||
headers: { 'Content-Type': 'application/json' },
|
headers: { 'Content-Type': 'application/json' },
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
eventId,
|
eventId,
|
||||||
brackets: brackets.map((b) => ({
|
brackets: displayBrackets.map((b) => ({
|
||||||
name: b.name,
|
name: b.name,
|
||||||
players: b.items.map((p, i) => ({
|
players: b.items.map((p, i) => ({
|
||||||
...p,
|
...p,
|
||||||
|
|||||||
Reference in New Issue
Block a user