This commit is contained in:
yohlo
2025-08-28 18:09:09 -05:00
parent 8eea99b125
commit 381ddc8f34
17 changed files with 343 additions and 98 deletions

View File

@@ -4,8 +4,10 @@ import type {
TournamentInput,
TournamentUpdateInput,
} from "@/features/tournaments/types";
import type { Team } from "@/features/teams/types";
import PocketBase from "pocketbase";
import { transformTournament } from "@/lib/pocketbase/util/transform-types";
import { transformTeam } from "@/lib/pocketbase/util/transform-types";
export function createTournamentsService(pb: PocketBase) {
return {
@@ -54,6 +56,12 @@ export function createTournamentsService(pb: PocketBase) {
{ "teams+": teamId },
{ expand: "teams, teams.players" }
);
await pb.collection("teams").update(
teamId,
{ "tournaments+": tournamentId }
);
return transformTournament(result);
},
async unenrollTeam(
@@ -65,7 +73,43 @@ export function createTournamentsService(pb: PocketBase) {
{ "teams-": teamId },
{ expand: "teams, teams.players" }
);
await pb.collection("teams").update(
teamId,
{ "tournaments-": tournamentId }
);
return transformTournament(result);
},
async getUnenrolledTeams(tournamentId: string): Promise<Team[]> {
try {
logger.info("PocketBase | Getting unenrolled teams for tournament", tournamentId);
const tournament = await pb.collection("tournaments").getOne(tournamentId, {
fields: "teams"
});
const enrolledTeamIds = tournament.teams || [];
if (enrolledTeamIds.length === 0) {
const allTeams = await pb.collection("teams").getFullList({
expand: "players"
});
return allTeams.map(transformTeam);
}
const filter = enrolledTeamIds
.map((teamId: string) => `id != "${teamId}"`)
.join(" && ");
const availableTeams = await pb.collection("teams").getFullList({
filter,
expand: "players"
});
return availableTeams.map(transformTeam);
} catch (error) {
logger.error("PocketBase | Error getting unenrolled teams", error);
throw error;
}
},
};
}