holy shit i can start events now
This commit is contained in:
@@ -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
|
||||||
|
|||||||
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) {
|
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 = [
|
||||||
|
|||||||
Reference in New Issue
Block a user