@alextomas80/api-client-grupeta
Version:
Cliente API Grupeta CBR
56 lines (46 loc) • 1.49 kB
text/typescript
import { getApiToken } from "../config";
import { Bakery, BakeryApi, BakeryApiResponse } from "../definitions/models/Bakery";
import createAxiosInstance from "./axios";
const mapBakery = (data: BakeryApiResponse): Bakery[] => {
const items = data.data.map(({ id, name, description, location, town, status, images }: BakeryApi) => {
return {
description,
location,
town,
status,
documentId: id,
name,
images,
} as unknown as Bakery;
});
return items;
};
const fetchBakeries = async (path: string): Promise<{ bakeries: Bakery[] }> => {
const ACCESS_TOKEN = getApiToken();
const axiosStrava = createAxiosInstance(ACCESS_TOKEN);
const { data } = await axiosStrava.get<BakeryApiResponse>(path);
const bakery = mapBakery(data);
return { bakeries: bakery };
};
export const getBakeries = async ({
fields = "*",
limit = 10,
page = 0,
sort = "name",
}: {
fields: string;
limit?: number;
page?: number;
sort?: string;
}): Promise<Bakery[]> => {
try {
// Crear los filtros para obtener solo las rutas futuras
const pageQuery = page ? `&page=${page}` : "";
const filters = [`limit=${limit}`, `sort=${sort}`, pageQuery].join("&");
const { bakeries } = await fetchBakeries(`/items/bakeries?${filters}&fields=${fields}`);
return bakeries;
} catch (error) {
console.error("Error al obtener las panaderías:", error);
throw new Error("Error al obtener las panaderías.");
}
};