88 lines
2.3 KiB
TypeScript
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}/`)
|
|
}; |