diff --git a/common.ts b/common.ts index 1fec076..7987f96 100644 --- a/common.ts +++ b/common.ts @@ -15,3 +15,28 @@ export interface Paging { */ PageSize: number; } + +export interface Paginacion { + /** + * El número de la página. Empieza desde 1. + */ + number: number; + /** + * El tamaño de la página. Tiene un límite de 5000. + */ + size: number; +} + +export function paginacionToSearchParams( + paginacion: Paginacion | undefined, + searchParams: URLSearchParams +) { + if (paginacion) { + searchParams.set("pageSize", paginacion.size.toString()); + searchParams.set("pageNumber", paginacion.number.toString()); + } else { + // El máximo, según lo que retorna en 'Paging' + searchParams.set("pageSize", "5000"); + searchParams.set("pageNumber", "1"); + } +} diff --git a/priceByCustomer.ts b/priceByCustomer.ts index 9672230..c8e012a 100644 --- a/priceByCustomer.ts +++ b/priceByCustomer.ts @@ -1,16 +1,12 @@ -import { HOST, Paging } from "./common.js"; +import { + HOST, + Paginacion, + paginacionToSearchParams, + Paging, +} from "./common.js"; -export interface PreciosQuery { - paginacion?: { - /** - * El número de la página. Empieza desde 1. - */ - number: number; - /** - * El tamaño de la página. Tiene un límite de 5000. - */ - size: number; - }; +export interface PriceByCustomerQuery { + paginacion?: Paginacion; } export interface Precio { @@ -27,17 +23,10 @@ export interface PreciosResponse { export async function getPricesByCustomer( token: string, - options: PreciosQuery + options: PriceByCustomerQuery ): Promise { let searchParams = new URLSearchParams(); - if (options.paginacion) { - searchParams.set("pageSize", options.paginacion.size.toString()); - searchParams.set("pageNumber", options.paginacion.number.toString()); - } else { - // El máximo, según lo que retorna en 'Paging' - searchParams.set("pageSize", "5000"); - searchParams.set("pageNumber", "1"); - } + paginacionToSearchParams(options.paginacion, searchParams); const res = await fetch( `${HOST}/api/Aperture/PriceByCustomer?${searchParams.toString()}`, { diff --git a/product.ts b/product.ts index 16d0370..7aa7286 100644 --- a/product.ts +++ b/product.ts @@ -1,16 +1,12 @@ -import { HOST, Paging } from "./common.js"; +import { + HOST, + Paginacion, + paginacionToSearchParams, + Paging, +} from "./common.js"; export interface ProductosQuery { - paginacion?: { - /** - * El número de la página. Empieza desde 1. - */ - number: number; - /** - * El tamaño de la página. Tiene un límite de 5000. - */ - size: number; - }; + paginacion?: Paginacion; /** * Decide si solo traer los productos habilitados. */ @@ -61,14 +57,7 @@ export async function getProductos( options: ProductosQuery ): Promise { let searchParams = new URLSearchParams(); - if (options.paginacion) { - searchParams.set("pageSize", options.paginacion.size.toString()); - searchParams.set("pageNumber", options.paginacion.number.toString()); - } else { - // El máximo, según lo que retorna en 'Paging' - searchParams.set("pageSize", "5000"); - searchParams.set("pageNumber", "1"); - } + paginacionToSearchParams(options.paginacion, searchParams); if ("onlyEnabled" in options) { searchParams.set("onlyEnabled", options.onlyEnabled ? "true" : "false"); }