dark mode default, basic tournament stats/podium
This commit is contained in:
@@ -9,16 +9,24 @@ import type { Team } from "@/features/teams/types";
|
||||
import PocketBase from "pocketbase";
|
||||
import { transformFreeAgent, transformTournament, transformTournamentInfo } from "@/lib/pocketbase/util/transform-types";
|
||||
import { transformTeam } from "@/lib/pocketbase/util/transform-types";
|
||||
import { getFreeAgents } from "@/features/tournaments/server";
|
||||
import { PlayerInfo } from "@/features/players/types";
|
||||
|
||||
export function createTournamentsService(pb: PocketBase) {
|
||||
return {
|
||||
async getTournament(id: string, isAdmin: boolean = false): Promise<Tournament> {
|
||||
const result = await pb.collection("tournaments").getOne(id, {
|
||||
expand: "teams, teams.players, matches, matches.tournament, matches.home, matches.away, matches.home.players, matches.away.players",
|
||||
});
|
||||
return transformTournament(result, isAdmin);
|
||||
const [tournamentResult, teamStatsResult] = await Promise.all([
|
||||
pb.collection("tournaments").getOne(id, {
|
||||
expand: "teams, teams.players, matches, matches.tournament, matches.home, matches.away, matches.home.players, matches.away.players",
|
||||
}),
|
||||
pb.collection("team_stats_per_tournament").getFullList({
|
||||
filter: `tournament_id = "${id}"`,
|
||||
sort: "-wins,-total_cups_made"
|
||||
})
|
||||
]);
|
||||
|
||||
tournamentResult.team_stats = teamStatsResult;
|
||||
|
||||
return transformTournament(tournamentResult, isAdmin);
|
||||
},
|
||||
async getMostRecentTournament(): Promise<Tournament> {
|
||||
const result = await pb
|
||||
@@ -29,17 +37,35 @@ export function createTournamentsService(pb: PocketBase) {
|
||||
sort: "-created",
|
||||
}
|
||||
);
|
||||
|
||||
const teamStatsResult = await pb.collection("team_stats_per_tournament").getFullList({
|
||||
filter: `tournament_id = "${result.id}"`,
|
||||
sort: "-wins,-total_cups_made"
|
||||
});
|
||||
|
||||
result.team_stats = teamStatsResult;
|
||||
|
||||
return transformTournament(result);
|
||||
},
|
||||
async listTournaments(): Promise<TournamentInfo[]> {
|
||||
const result = await pb
|
||||
.collection("tournaments")
|
||||
.getFullList({
|
||||
fields: "id,name,location,start_time,end_time,logo",
|
||||
expand: "teams,teams.players,matches",
|
||||
sort: "-created",
|
||||
});
|
||||
|
||||
return result.map(transformTournamentInfo);
|
||||
const tournamentsWithStats = await Promise.all(result.map(async (tournament) => {
|
||||
const teamStats = await pb.collection("team_stats_per_tournament").getFullList({
|
||||
filter: `tournament_id = "${tournament.id}"`,
|
||||
sort: "-wins,-total_cups_made"
|
||||
});
|
||||
|
||||
tournament.team_stats = teamStats;
|
||||
return tournament;
|
||||
}));
|
||||
|
||||
return tournamentsWithStats.map(transformTournamentInfo);
|
||||
},
|
||||
async createTournament(data: TournamentInput): Promise<Tournament> {
|
||||
const result = await pb
|
||||
|
||||
Reference in New Issue
Block a user