This commit is contained in:
David Arranz 2025-11-16 20:29:07 +01:00
parent 8d0002bfb4
commit c77705b8b6
14 changed files with 149 additions and 148 deletions

View File

@ -1,4 +1,4 @@
import { FiltersPrimitives } from "./Filter";
import type { FiltersPrimitives } from "./Filter";
import { Filters } from "./Filters";
import { InvalidCriteria } from "./InvalidCriteria";
import { Order } from "./Order";
@ -8,7 +8,7 @@ export class Criteria {
public readonly filters: Filters,
public readonly order: Order,
public readonly pageSize: number | null,
public readonly pageNumber: number | null,
public readonly pageNumber: number | null
) {
if (pageNumber !== null && pageSize === null) {
throw new InvalidCriteria();
@ -20,13 +20,13 @@ export class Criteria {
orderBy: string | null,
orderType: string | null,
pageSize: number | null,
pageNumber: number | null,
pageNumber: number | null
): Criteria {
return new Criteria(
Filters.fromPrimitives(filters),
Order.fromPrimitives(orderBy, orderType),
pageSize,
pageNumber,
pageNumber
);
}

View File

@ -1,6 +1,6 @@
import { FilterField } from "./FilterField";
import { FilterOperator } from "./FilterOperator";
import { FilterValue } from "./FilterValue";
import type { FilterField } from "./FilterField";
import type { FilterOperator } from "./FilterOperator";
import type { FilterValue } from "./FilterValue";
export type FiltersPrimitives = {
field: string;
operator: string;

View File

@ -23,7 +23,7 @@ export class Filter {
return new Filter(
new FilterField(field),
new FilterOperator(Operator[operator as keyof typeof Operator]),
new FilterValue(value),
new FilterValue(value)
);
}

View File

@ -1,11 +1,11 @@
import { Filter, FiltersPrimitives } from "./Filter";
import { Filter, type FiltersPrimitives } from "./Filter";
export class Filters {
constructor(public readonly value: Filter[]) {}
static fromPrimitives(filters: FiltersPrimitives[]): Filters {
return new Filters(
filters.map((filter) => Filter.fromPrimitives(filter.field, filter.operator, filter.value)),
filters.map((filter) => Filter.fromPrimitives(filter.field, filter.operator, filter.value))
);
}

View File

@ -4,7 +4,7 @@ import { OrderType, OrderTypes } from "./OrderType";
export class Order {
constructor(
public readonly orderBy: OrderBy,
public readonly orderType: OrderType,
public readonly orderType: OrderType
) {}
static none(): Order {

View File

@ -1,4 +1,4 @@
import { Criteria as BaseCriteria, Filters, FiltersPrimitives, Order } from "./codelytv";
import { Criteria as BaseCriteria, Filters, type FiltersPrimitives, Order } from "./codelytv";
import { INITIAL_PAGE_INDEX, INITIAL_PAGE_SIZE } from "./defaults";
export class Criteria extends BaseCriteria {

View File

@ -1,4 +1,4 @@
import { FiltersPrimitives } from "./codelytv";
import type { FiltersPrimitives } from "./codelytv";
import { Criteria } from "./critera";
import { DEFAULT_ORDER, INITIAL_PAGE_INDEX, INITIAL_PAGE_SIZE } from "./defaults";
@ -64,7 +64,7 @@ export class CriteriaFromUrlConverter {
searchParams.forEach((value, key) => {
const match = key.match(/filters\[(\d+)]\[(.+)]/);
if (match) {
const index = match[1];
const index = match[1]!;
const property = match[2] as keyof FiltersPrimitives;
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (!tempFilters[index]) {

View File

@ -1,5 +1,6 @@
import { FindOptions, Sequelize } from "sequelize";
import { Criteria } from "./critera.js";
import type { FindOptions, Sequelize } from "sequelize";
import type { Criteria } from "./critera.js";
/**
* Mapeo lógicofísico de campos.