scoring works omg

This commit is contained in:
2026-06-10 14:26:59 +01:00
parent 069e6cd22c
commit 72c93e88c1
3 changed files with 69 additions and 5 deletions

View File

@@ -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) {
// Decode body
let responseBody = await request.json();
@@ -7,6 +13,67 @@ export async function POST({ request }: any) {
return new Response('nuh uh');
} else {
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');
}
}