Usar type en común: Paginacion

This commit is contained in:
Cat /dev/Nulo 2021-10-12 19:21:09 -03:00
parent 934efde4c3
commit 95492e254a
3 changed files with 43 additions and 40 deletions

View file

@ -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");
}
}

View file

@ -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<PreciosResponse> {
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()}`,
{

View file

@ -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<ProductosResponse> {
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");
}