Yaltopia-FIFA/actions/leagues.ts
Kirubel-Kibru-Yaltopia 89440985f1
Some checks failed
Deploy to Cloudflare Workers / deploy (push) Has been cancelled
x
2026-05-24 21:46:10 +03:00

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`);
}