Some checks failed
Deploy to Cloudflare Workers / deploy (push) Has been cancelled
78 lines
2.4 KiB
TypeScript
78 lines
2.4 KiB
TypeScript
"use server";
|
|
|
|
import { revalidatePath } from "next/cache";
|
|
import { createClient } from "@/lib/supabase/server";
|
|
import * as leagues from "@/lib/services/leagues";
|
|
import * as teams from "@/lib/services/teams";
|
|
|
|
export async function createLeague(formData: FormData) {
|
|
const supabase = await createClient();
|
|
const {
|
|
data: { user },
|
|
} = await supabase.auth.getUser();
|
|
if (!user) throw new Error("Unauthorized");
|
|
|
|
const league = await leagues.createLeague(supabase, user.id, {
|
|
name: formData.get("name") as string,
|
|
description: (formData.get("description") as string) || undefined,
|
|
});
|
|
|
|
revalidatePath("/leagues");
|
|
return league;
|
|
}
|
|
|
|
export async function createCompetition(leagueId: string, formData: FormData) {
|
|
const supabase = await createClient();
|
|
const {
|
|
data: { user },
|
|
} = await supabase.auth.getUser();
|
|
if (!user) throw new Error("Unauthorized");
|
|
|
|
const data = await leagues.createCompetition(supabase, user.id, leagueId, {
|
|
name: formData.get("name") as string,
|
|
tournament_mode: formData.get("tournament_mode") as "league" | "cup",
|
|
timezone: (formData.get("timezone") as string) || "UTC",
|
|
});
|
|
|
|
revalidatePath(`/leagues/${leagueId}`);
|
|
return data;
|
|
}
|
|
|
|
export async function activateCompetition(competitionId: string) {
|
|
const supabase = await createClient();
|
|
await leagues.activateCompetition(supabase, competitionId);
|
|
revalidatePath("/leagues");
|
|
}
|
|
|
|
export async function generateFixtures(competitionId: string, mode: string) {
|
|
const supabase = await createClient();
|
|
await leagues.generateFixtures(
|
|
supabase,
|
|
competitionId,
|
|
mode as "league" | "cup"
|
|
);
|
|
revalidatePath("/leagues");
|
|
}
|
|
|
|
export async function createTeam(competitionId: string, formData: FormData) {
|
|
const supabase = await createClient();
|
|
const data = await teams.createTeam(supabase, competitionId, {
|
|
name: formData.get("name") as string,
|
|
nickname: (formData.get("nickname") as string) || undefined,
|
|
icon: (formData.get("icon") as string) || undefined,
|
|
});
|
|
revalidatePath("/leagues");
|
|
return data;
|
|
}
|
|
|
|
export async function saveLeagueRules(leagueId: string, rules: object) {
|
|
const supabase = await createClient();
|
|
const {
|
|
data: { user },
|
|
} = await supabase.auth.getUser();
|
|
if (!user) throw new Error("Unauthorized");
|
|
|
|
await leagues.saveLeagueRules(supabase, user.id, leagueId, rules);
|
|
revalidatePath(`/leagues/${leagueId}/rules`);
|
|
}
|