Uecko_ERP/packages/rdx-criteria/src/critera.ts

52 lines
1.3 KiB
TypeScript
Raw Normal View History

2025-05-26 14:45:03 +00:00
import { Criteria as BaseCriteria, Filters, FiltersPrimitives, Order } from "@codelytv/criteria";
2025-06-24 18:38:57 +00:00
import { INITIAL_PAGE_INDEX, INITIAL_PAGE_SIZE } from "./defaults";
2025-05-26 14:45:03 +00:00
export class Criteria extends BaseCriteria {
/**
* Creates a new Criteria instance.
*
* @param filters - The filters to apply.
* @param order - The order to apply.
* @param pageSize - The size of the page.
* @param pageNumber - The number of the page.
*/
constructor(
public readonly filters: Filters,
public readonly order: Order,
public readonly pageSize: number,
public readonly pageNumber: number
) {
super(filters, order, pageSize, pageNumber);
}
static fromPrimitives(
filters: FiltersPrimitives[],
orderBy: string | null,
orderType: string | null,
pageSize: number | null,
2025-06-24 18:38:57 +00:00
pageNumber: number | null
): Criteria {
2025-05-26 14:45:03 +00:00
return new Criteria(
2025-06-24 18:38:57 +00:00
Filters.fromPrimitives(filters),
Order.fromPrimitives(orderBy, orderType),
pageSize ?? INITIAL_PAGE_SIZE,
pageNumber ?? INITIAL_PAGE_INDEX
2025-05-26 14:45:03 +00:00
);
2025-06-24 18:38:57 +00:00
}
2025-09-11 15:14:51 +00:00
toPrimitives() {
2025-06-24 18:38:57 +00:00
return {
filters: this.filters.toPrimitives(),
2025-09-11 15:14:51 +00:00
orderBy: this.order.orderBy.value,
orderType: this.order.orderType.value,
2025-06-24 18:38:57 +00:00
pageSize: this.pageSize,
pageNumber: this.pageNumber,
};
}
2025-09-11 15:14:51 +00:00
toJSON() {
return this.toPrimitives();
}
2025-05-26 14:45:03 +00:00
}