import type { Player, PlayerInfo, PlayerInput, PlayerUpdateInput, PlayerStats, } from "@/features/players/types"; import { transformPlayer, transformPlayerInfo } from "@/lib/pocketbase/util/transform-types"; import PocketBase from "pocketbase"; import { DataFetchOptions } from "./base"; export function createPlayersService(pb: PocketBase) { return { async getPlayerInfo(id: string): Promise { const result = await pb.collection("players").getOne(id, { fields: "id,first_name,last_name" }); return transformPlayerInfo(result); }, async listPlayerInfos(): Promise { const result = await pb.collection("players").getFullList({ fields: "id,first_name,last_name", }); return result.map(transformPlayerInfo); }, async getPlayerByAuthId(authId: string): Promise { const result = await pb.collection("players").getList(1, 1, { filter: `auth_id = "${authId}"`, expand: 'teams' }); return result.items[0] ? transformPlayer(result.items[0]) : null; }, async getPlayer(id: string): Promise { const result = await pb.collection("players").getOne(id, { expand: "teams", }); return transformPlayer(result); }, async listPlayers(): Promise { const result = await pb.collection("players").getFullList({ fields: "id,first_name,last_name", }); return result.map(transformPlayer); }, async createPlayer(data: PlayerInput): Promise { const result = await pb.collection("players").create(data); return transformPlayer(result); }, async updatePlayer(id: string, data: PlayerUpdateInput): Promise { const result = await pb.collection("players").update(id, data); return transformPlayer(result); }, async getUnassociatedPlayers(): Promise { const result = await pb.collection("players").getFullList({ filter: 'auth_id = ""', fields: "id,first_name,last_name", }); return result.map(transformPlayer); }, async getPlayerStats(playerId: string): Promise { const result = await pb.collection("player_stats").getFullList({ filter: `player_id = "${playerId}"`, }); return result; }, }; }