34 lines
1.1 KiB
TypeScript
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 };
|
|
};
|