Uecko_ERP/packages/rdx-criteria/src/codelytv/Criteria.ts
2025-11-16 20:29:07 +01:00

45 lines
1.1 KiB
TypeScript

import type { FiltersPrimitives } from "./Filter";
import { Filters } from "./Filters";
import { InvalidCriteria } from "./InvalidCriteria";
import { Order } from "./Order";
export class Criteria {
constructor(
public readonly filters: Filters,
public readonly order: Order,
public readonly pageSize: number | null,
public readonly pageNumber: number | null
) {
if (pageNumber !== null && pageSize === null) {
throw new InvalidCriteria();
}
}
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,
pageNumber
);
}
static withFilters(filters: FiltersPrimitives[]): Criteria {
return Criteria.fromPrimitives(filters, null, null, null, null);
}
hasOrder(): boolean {
return !this.order.isNone();
}
hasFilters(): boolean {
return !this.filters.isEmpty();
}
}