Files
flxn-app/src/lib/pocketbase/services/players.ts
2025-08-30 01:42:23 -05:00

51 lines
1.6 KiB
TypeScript

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