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

export interface Container {
	key: string;
	description: string;
}

export interface ContainerListResponse {
	items: Container[];
	total: number;
	page: number;
	page_size: number;
}

export interface CreateContainerData {
	key: string;
	description: string;
}

export interface UpdateContainerData {
	key?: string;
	description?: string;
}

/**
 * API para Containers
 */
export const containersApi = {
    /**
     * Lista todos los containers con paginación y búsqueda
     * @param page - Número de página (por defecto 1)
     * @param pageSize - Tamaño de página (por defecto 50)
     * @param search - Término de búsqueda (opcional)
     */
    list: (page = 1, pageSize = 50, search?: string) => {
        let url = `/v1/public/reference_data/containers/?page=${page}&page_size=${pageSize}`;
        if (search) {
            url += `&search=${encodeURIComponent(search)}`;
        }
        return api.get<ContainerListResponse>(url);
    },

    /**
     * Obtiene un container por ID
     * @param key - ID del container
     */
    get: (key: number) => 
        // CORRECTO: Slash final incluido
        api.get<Container>(`/v1/containers/${key}/`),

    /**
     * Crea un nuevo container
     * @param data - Datos del container a crear
     */
    create: (data: CreateContainerData) =>
        // CORREGIDO: Se añadió el slash '/' al final para evitar redirección en POST
        api.post<Container>('/v1/public/reference_data/containers/', data),

    /**
     * Actualiza un container existente
     * @param key - ID del container a actualizar
     * @param data - Datos a actualizar
     */
    update: (key: number, data: UpdateContainerData) =>
        // CORRECTO: Slash final después de la key
        api.put<Container>(`/v1/public/reference_data/containers/${key}/`, data),

    /**
     * Elimina un container
     * @param key - ID del container a eliminar
     */
    delete: (key: number) => 
        // CORRECTO: Slash final después de la key
        api.delete(`/v1/public/reference_data/containers/${key}/`)
};