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, ); } }