import client from './client' import type { Game, Challenge } from '@/types' export interface CreateGameData { title: string download_url: string genre?: string cover_url?: string } export interface CreateChallengeData { title: string description: string type: string difficulty: string points: number estimated_time?: number proof_type: string proof_hint?: string } export const gamesApi = { list: async (marathonId: number): Promise => { const response = await client.get(`/marathons/${marathonId}/games`) return response.data }, get: async (id: number): Promise => { const response = await client.get(`/games/${id}`) return response.data }, create: async (marathonId: number, data: CreateGameData): Promise => { const response = await client.post(`/marathons/${marathonId}/games`, data) return response.data }, delete: async (id: number): Promise => { await client.delete(`/games/${id}`) }, uploadCover: async (id: number, file: File): Promise => { const formData = new FormData() formData.append('file', file) const response = await client.post(`/games/${id}/cover`, formData, { headers: { 'Content-Type': 'multipart/form-data' }, }) return response.data }, // Challenges getChallenges: async (gameId: number): Promise => { const response = await client.get(`/games/${gameId}/challenges`) return response.data }, createChallenge: async (gameId: number, data: CreateChallengeData): Promise => { const response = await client.post(`/games/${gameId}/challenges`, data) return response.data }, deleteChallenge: async (id: number): Promise => { await client.delete(`/challenges/${id}`) }, generateChallenges: async (marathonId: number): Promise<{ message: string }> => { const response = await client.post<{ message: string }>(`/marathons/${marathonId}/generate-challenges`) return response.data }, }