Usar type en común: Paginacion
This commit is contained in:
parent
934efde4c3
commit
95492e254a
3 changed files with 43 additions and 40 deletions
25
common.ts
25
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");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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()}`,
|
||||
{
|
||||
|
|
27
product.ts
27
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<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");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue