import { apiGet, apiPost, apiPut, apiDelete, apiGetPaginated, apiSearch } from './client';
import type { Platform, PlatformFilters, PlatformFormData } from '@/types';

// Obtener todas las plataformas con paginación
export const getPlatforms = async (
  page: number = 1,
  limit: number = 10,
  filters?: PlatformFilters
) => {
  return apiGetPaginated<Platform>('/api/platforms', page, limit, filters);
};

// Obtener todas las plataformas (sin paginación para selectores)
export const getAllPlatforms = async () => {
  return apiGet<Platform[]>('/api/platforms/all');
};

// Obtener una plataforma por ID
export const getPlatformById = async (id: number) => {
  return apiGet<Platform>(`/api/platforms/${id}`);
};

// Crear una nueva plataforma
export const createPlatform = async (data: PlatformFormData) => {
  return apiPost<Platform>('/api/platforms', data);
};

// Actualizar una plataforma existente
export const updatePlatform = async (id: number, data: PlatformFormData) => {
  return apiPut<Platform>(`/api/platforms/${id}`, data);
};

// Eliminar una plataforma
export const deletePlatform = async (id: number) => {
  return apiDelete(`/api/platforms/${id}`);
};

// Buscar plataformas
export const searchPlatforms = async (query: string, filters?: PlatformFilters) => {
  return apiSearch<Platform>('/api/platforms', query, filters);
};

// Obtener estadísticas de plataformas
export const getPlatformStats = async () => {
  return apiGet<{
    totalPlatforms: number;
    totalGames: number;
    averageGamesPerPlatform: number;
    mostPopularPlatform: string;
    leastPopularPlatform: string;
  }>('/api/platforms/stats');
};
