settings + reinvite players to lobby
This commit is contained in:
@@ -1,26 +1,32 @@
|
||||
// src/routes/(app)/+page.server.ts
|
||||
import { db } from '$lib/server/db';
|
||||
import { match, team, mappool } from '$lib/server/db/schema';
|
||||
import { eq, desc, count, and, inArray } from 'drizzle-orm';
|
||||
import { redirect } from '@sveltejs/kit';
|
||||
import { eq, desc, count, inArray } from 'drizzle-orm';
|
||||
import type { PageServerLoad } from './$types';
|
||||
|
||||
export const load: PageServerLoad = async ({ locals }) => {
|
||||
if (!locals.user) redirect(302, '/');
|
||||
// ── NOT LOGGED IN → landing page (no redirect loop!) ──
|
||||
if (!locals.user) {
|
||||
return {
|
||||
authenticated: false as const,
|
||||
recentMatches: [],
|
||||
liveMatches: [],
|
||||
stats: { matches: 0, finished: 0, teams: 0, mappools: 0 }
|
||||
};
|
||||
}
|
||||
|
||||
// Recent matches (last 5)
|
||||
// ── LOGGED IN → dashboard data ──
|
||||
const recentMatches = await db.query.match.findMany({
|
||||
with: { participants: { with: { team: true } } },
|
||||
orderBy: desc(match.createdAt),
|
||||
limit: 5
|
||||
});
|
||||
|
||||
// Live matches
|
||||
const liveMatches = await db.query.match.findMany({
|
||||
with: { participants: { with: { team: true } } },
|
||||
where: inArray(match.state, ['LOBBY', 'ROLLING', 'PICKING', 'PLAYING'])
|
||||
});
|
||||
|
||||
// Counts
|
||||
const [matchCount] = await db.select({ count: count() }).from(match);
|
||||
const [teamCount] = await db.select({ count: count() }).from(team);
|
||||
const [poolCount] = await db.select({ count: count() }).from(mappool);
|
||||
@@ -30,6 +36,7 @@ export const load: PageServerLoad = async ({ locals }) => {
|
||||
.where(eq(match.state, 'FINISHED'));
|
||||
|
||||
return {
|
||||
authenticated: true as const,
|
||||
recentMatches,
|
||||
liveMatches,
|
||||
stats: {
|
||||
|
||||
Reference in New Issue
Block a user