/**
 * API Client para Sectors
 * Gestiona las operaciones CRUD para los sectores
 */
import { api } from '$lib/api';

export interface Sector {
	key: string;
	description: string;
	authorized: number;
}

export interface SectorListResponse {
	items: Sector[];
	total: number;
	page: number;
	page_size: number;
}

export interface CreateSectorData {
	key: string;
	description: string;
	authorized: number;
}

export interface UpdateSectorData {
	key?: string;
	description?: string;
	authorized?: number;
}

/**
 * API para Sectors
 */
export const sectorsApi = {
    /**
     * Lista todos los sectores con paginación
     * @param page - Número de página (por defecto 1)
     * @param pageSize - Tamaño de página (por defecto 50)
     */
    list: (page = 1, pageSize = 50) =>
        api.get<SectorListResponse>(
            // CORREGIDO: Slash antes del '?'
            `/v1/public/reference_data/sectors/?page=${page}&page_size=${pageSize}`
        ),

    /**
     * Obtiene un sector por key
     * @param key - Clave del sector
     */
    get: (key: string) => 
        // CORREGIDO: Slash final
        api.get<Sector>(`/v1/public/reference_data/sectors/${key}/`),

    /**
     * Crea un nuevo sector
     * @param data - Datos del sector a crear
     */
    create: (data: CreateSectorData) =>
        // CORREGIDO: Slash final
        api.post<Sector>('/v1/public/reference_data/sectors/', data),

    /**
     * Actualiza un sector existente
     * @param key - Clave del sector a actualizar
     * @param data - Datos a actualizar
     */
    update: (key: string, data: UpdateSectorData) =>
        // CORREGIDO: Slash final después de la variable
        api.put<Sector>(`/v1/public/reference_data/sectors/${key}/`, data),

    /**
     * Elimina un sector
     * @param key - Clave del sector a eliminar
     */
    delete: (key: string) => 
        // CORREGIDO: Slash final después de la variable
        api.delete(`/v1/public/reference_data/sectors/${key}/`)
};