holy shit i can start events now
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { db } from '$lib/server/db';
|
||||
import { eq } from 'drizzle-orm';
|
||||
import * as schema from '$lib/server/db/schema';
|
||||
import { globalEmitter } from './globalEmitter';
|
||||
|
||||
// For page.server.ts so that it doesnt look weird before loading
|
||||
export async function getAllInitialInfo() {
|
||||
@@ -67,6 +68,28 @@ export async function getRegisteredEvents(eventId?: number) {
|
||||
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
|
||||
export async function getAllRegisteredEventPlayers(eventId: number) {
|
||||
const eventPlayers = await db
|
||||
|
||||
17
src/routes/api/eventStart/+server.ts
Normal file
17
src/routes/api/eventStart/+server.ts
Normal 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');
|
||||
}
|
||||
}
|
||||
@@ -126,7 +126,6 @@
|
||||
for (let player in brackets[bracket].items) {
|
||||
if (parseInt(player) > highestPlayer) {
|
||||
highestPlayer = parseInt(player);
|
||||
console.log(highestPlayer, 'high');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -145,6 +144,15 @@
|
||||
loading = false;
|
||||
|
||||
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(() => {
|
||||
@@ -176,6 +184,20 @@
|
||||
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() {
|
||||
submitStatus = 'submitting';
|
||||
try {
|
||||
@@ -216,12 +238,20 @@
|
||||
<div class="flex justify-center">
|
||||
<div class="w-full flex-col px-[2vw] text-center">
|
||||
<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"
|
||||
>
|
||||
{event.name} - {event.division} - scoring
|
||||
{event.name} - {event.division} - scoring {#if event.state == 1}- ONGOING
|
||||
{/if}
|
||||
</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)}> -->
|
||||
<!-- {sortByScore ? 'Sort: Score' : 'Sort: Manual'} -->
|
||||
@@ -293,6 +323,7 @@
|
||||
<input
|
||||
type="number"
|
||||
placeholder="run {run + 1}"
|
||||
disabled={event.state != 1}
|
||||
value={pendingScores[player.id]?.[run] ?? ''}
|
||||
oninput={(e) => {
|
||||
const current = [
|
||||
|
||||
Reference in New Issue
Block a user