holy shit i can start events now

This commit is contained in:
2026-06-25 13:12:27 +01:00
parent 2f3005ba2a
commit ed98690bb6
3 changed files with 74 additions and 3 deletions

View File

@@ -1,6 +1,7 @@
import { db } from '$lib/server/db'; import { db } from '$lib/server/db';
import { eq } from 'drizzle-orm'; import { eq } from 'drizzle-orm';
import * as schema from '$lib/server/db/schema'; import * as schema from '$lib/server/db/schema';
import { globalEmitter } from './globalEmitter';
// For page.server.ts so that it doesnt look weird before loading // For page.server.ts so that it doesnt look weird before loading
export async function getAllInitialInfo() { export async function getAllInitialInfo() {
@@ -67,6 +68,28 @@ export async function getRegisteredEvents(eventId?: number) {
return { events }; return { events };
} }
export async function startEvent(eventId: number) {
let event = await db
.select()
.from(schema.registeredEventsView)
.where(eq(schema.registeredEventsView.eventId, eventId));
let requestedEvent = event[0];
console.log(requestedEvent);
if (requestedEvent.state != 0) {
console.log('not startable');
return false;
} else {
let replacedEvent = await db
.update(schema.registeredEvents)
.set({ state: 1 })
.where(eq(schema.registeredEvents.id, requestedEvent.eventId))
.returning();
console.log(replacedEvent);
globalEmitter.emit('eventUpdate');
return true;
}
}
// Get all players with an event id specified // Get all players with an event id specified
export async function getAllRegisteredEventPlayers(eventId: number) { export async function getAllRegisteredEventPlayers(eventId: number) {
const eventPlayers = await db const eventPlayers = await db

View File

@@ -0,0 +1,17 @@
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 { startEvent } from '$lib/server/databaseManager';
export async function POST({ request }: any) {
let responseBody = await request.json();
if (!responseBody) {
return new Error('send a response dummy');
} else {
console.log(responseBody);
startEvent(responseBody.eventId);
return new Response('ok');
}
}

View File

@@ -126,7 +126,6 @@
for (let player in brackets[bracket].items) { for (let player in brackets[bracket].items) {
if (parseInt(player) > highestPlayer) { if (parseInt(player) > highestPlayer) {
highestPlayer = parseInt(player); highestPlayer = parseInt(player);
console.log(highestPlayer, 'high');
} }
} }
} }
@@ -145,6 +144,15 @@
loading = false; loading = false;
eventEndpoint = new EventSource('/api/registeredEvents'); eventEndpoint = new EventSource('/api/registeredEvents');
eventEndpoint.onmessage = (e) => {
const data = JSON.parse(e.data)[eventId - 1];
console.log(data);
event = data;
brackets = data.registeredPlayers.map((b: any) => ({
...b,
items: [...b.items]
}));
};
}); });
onDestroy(() => { onDestroy(() => {
@@ -176,6 +184,20 @@
dropTarget = null; dropTarget = null;
} }
async function startEvent() {
try {
const res = await fetch('/api/eventStart', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
eventId: eventId
})
});
} catch {
return new Error();
}
}
async function submitResults() { async function submitResults() {
submitStatus = 'submitting'; submitStatus = 'submitting';
try { try {
@@ -216,12 +238,20 @@
<div class="flex justify-center"> <div class="flex justify-center">
<div class="w-full flex-col px-[2vw] text-center"> <div class="w-full flex-col px-[2vw] text-center">
<div <div
style:background-color={event.state == 1
? 'color-mix(in srgb, #fe640b 18%, transparent);'
: undefined}
class="align-text-middle my-7 h-10 w-full rounded-2xl border-2 border-solid border-ctp-surface1" class="align-text-middle my-7 h-10 w-full rounded-2xl border-2 border-solid border-ctp-surface1"
> >
{event.name} - {event.division} - scoring {event.name} - {event.division} - scoring {#if event.state == 1}- ONGOING
{/if}
</div> </div>
<button class="mb-4 rounded border-2 border-ctp-peach p-2">Start event</button> {#if event.state == 0}
<button onclick={startEvent} class="mb-4 rounded border-2 border-ctp-peach p-2"
>Start event</button
>
{/if}
<!-- <button onclick={() => (sortByScore = !sortByScore)}> --> <!-- <button onclick={() => (sortByScore = !sortByScore)}> -->
<!-- {sortByScore ? 'Sort: Score' : 'Sort: Manual'} --> <!-- {sortByScore ? 'Sort: Score' : 'Sort: Manual'} -->
@@ -293,6 +323,7 @@
<input <input
type="number" type="number"
placeholder="run {run + 1}" placeholder="run {run + 1}"
disabled={event.state != 1}
value={pendingScores[player.id]?.[run] ?? ''} value={pendingScores[player.id]?.[run] ?? ''}
oninput={(e) => { oninput={(e) => {
const current = [ const current = [