flbxcup/src/routes/competitions/[id]/bracket/[bracket_id]/+page.server.ts

34 lines
1.1 KiB
TypeScript

import { getCompetition } from '@/lib/server/db/queries/competitions';
import { getRound } from '@/lib/server/db/queries/rounds';
import type { PageServerLoad } from './$types';
import { getBracketWithRoundsAndMatches } from '@/lib/server/db/queries/brackets';
import { getTeamsByCompetition } from '@/lib/server/db/queries/teams';
export const load: PageServerLoad = async ({ params, locals }) => {
const competitionId = params.id;
const bracketId = params.bracket_id;
const { user } = locals;
if (!user) {
throw new Error('Unauthorized');
}
if (competitionId === '') {
throw new Error('Invalid competition id');
}
if (bracketId === '') {
throw new Error('Invalid round id');
}
const competition = await getCompetition(competitionId);
if (!competition) {
throw new Error('Invalid competition');
}
if (competition.owner !== locals.user.id) {
throw new Error('Unauthorized');
}
const bracket = await getBracketWithRoundsAndMatches(bracketId);
if (!bracket) {
throw new Error('Invalid round');
}
return { competition: competition, bracket };
};