40 lines
1.0 KiB
TypeScript
40 lines
1.0 KiB
TypeScript
|
|
import { Criteria as BaseCriteria, Filters, FiltersPrimitives, Order } from "@codelytv/criteria";
|
||
|
|
import { INITIAL_PAGE_INDEX, INITIAL_PAGE_SIZE } from './defaults';
|
||
|
|
|
||
|
|
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,
|
||
|
|
pageNumber: number | null,
|
||
|
|
): Criteria {
|
||
|
|
|
||
|
|
|
||
|
|
return new Criteria(
|
||
|
|
Filters.fromPrimitives(filters),
|
||
|
|
Order.fromPrimitives(orderBy, orderType),
|
||
|
|
pageSize ?? INITIAL_PAGE_SIZE,
|
||
|
|
pageNumber ?? INITIAL_PAGE_INDEX,
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|