Files
plantillas-proyectos/frontend/src/lib/api/dashboard/refrence_data/countries.ts

88 lines
2.3 KiB
TypeScript

/**
* API Client para Countries
* Gestiona las operaciones CRUD para los países
*/
import { api } from '$lib/api';
export interface Country {
m3_key: string;
mex_key: string;
ame_key: string;
description_es: string;
description_en: string;
}
export interface CountryListResponse {
items: Country[];
total: number;
page: number;
page_size: number;
}
export interface CreateCountryData {
m3_key: string;
mex_key: string;
ame_key: string;
description_es: string;
description_en: string;
}
export interface UpdateCountryData {
m3_key?: string;
mex_key?: string;
ame_key?: string;
description_es?: string;
description_en?: string;
}
/**
* API para Countries
*/
export const countriesApi = {
/**
* Lista todos los países con paginación
* @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/refrence_data/countries/?page=${page}&page_size=${pageSize}`;
if (search) {
url += `&search=${encodeURIComponent(search)}`;
}
return api.get<CountryListResponse>(url);
},
/**
* Obtiene un país por su clave M3
* @param m3_key - Clave M3 del país
*/
get: (m3_key: string) =>
// CORREGIDO: Añadido '/' al final
api.get<Country>(`/v1/public/refrence_data/countries/${m3_key}/`),
/**
* Crea un nuevo país
* @param data - Datos del país a crear
*/
create: (data: CreateCountryData) =>
// CORREGIDO: Añadido '/' al final
api.post<Country>('/v1/public/refrence_data/countries/', data),
/**
* Actualiza un país existente
* @param m3_key - Clave M3 del país a actualizar
* @param data - Datos a actualizar
*/
update: (m3_key: string, data: UpdateCountryData) =>
// CORREGIDO: Añadido '/' después de la clave
api.put<Country>(`/v1/public/refrence_data/countries/${m3_key}/`, data),
/**
* Elimina un país
* @param m3_key - Clave M3 del país a eliminar
*/
delete: (m3_key: string) =>
// CORREGIDO: Añadido '/' después de la clave
api.delete(`/v1/public/refrence_data/countries/${m3_key}/`)
};