Se duplican las constantes y lógica de paginación en los servicios del backend.
Problema
Actualmente tanto reservation.service.ts como order.service.ts definen IDÉNTICAS constantes y lógica:
// Duplicado en ambos archivos
const PAGINATION = {
DEFAULT_LIMIT: 20,
MAX_LIMIT: 100,
} as const;
// Lógica también duplicada:
const limit = Math.min(filters.limit ?? PAGINATION.DEFAULT_LIMIT, PAGINATION.MAX_LIMIT);
Además, el parseo de query params (limit, offset) en las rutas se repite manualmente en cada handler.
Solución propuesta
Crear un helper compartido estilo createPagination() que:
- Centralice las constantes
DEFAULT_LIMIT, MAX_LIMIT
- Provea una función
parsePagination() que extraiga limit y offset de query params con validación (clamping)
- Reemplace las definiciones inline en ambos servicios y rutas
Archivos afectados
apps/backend/src/services/reservation.service.ts (constantes + lógica inline)
apps/backend/src/services/order.service.ts (constantes + lógica inline)
apps/backend/src/routes/reservations.ts (parseo query params)
apps/backend/src/routes/orders.ts (parseo query params)
- Nuevo:
apps/backend/src/utils/pagination.ts
- Nuevo:
apps/backend/src/utils/pagination.test.ts
Alternativas consideradas
- Mantenerlo así y seguir duplicando en cada service nuevo — no escala
- Helper solo para constantes sin parseo — resuelve poco
Notas
Esto también aplica para el futuro: si se agrega un nuevo servicio con paginación, que use este helper en lugar de copiar.
Se duplican las constantes y lógica de paginación en los servicios del backend.
Problema
Actualmente tanto
reservation.service.tscomoorder.service.tsdefinen IDÉNTICAS constantes y lógica:Además, el parseo de query params (
limit,offset) en las rutas se repite manualmente en cada handler.Solución propuesta
Crear un helper compartido estilo
createPagination()que:DEFAULT_LIMIT,MAX_LIMITparsePagination()que extraigalimityoffsetde query params con validación (clamping)Archivos afectados
apps/backend/src/services/reservation.service.ts(constantes + lógica inline)apps/backend/src/services/order.service.ts(constantes + lógica inline)apps/backend/src/routes/reservations.ts(parseo query params)apps/backend/src/routes/orders.ts(parseo query params)apps/backend/src/utils/pagination.tsapps/backend/src/utils/pagination.test.tsAlternativas consideradas
Notas
Esto también aplica para el futuro: si se agrega un nuevo servicio con paginación, que use este helper en lugar de copiar.