hadmean/hadmean

View on GitHub
src/backend/lib/request/validations/implementations/pagination-filter.ts

Summary

Maintainability
A
25 mins
Test Coverage
A
100%
import { IPaginationFilters } from "../../../../data/types";
import { entityValidationImpl } from "./entity";
import { ValidationImplType } from "./types";
import { validateEntityFields } from "./_validateEntityField";

export const paginationFilterValidationImpl: ValidationImplType<
  IPaginationFilters
> = async (req, ignoreFieldsValidation) => {
  const take = Number(req.query.take) || 10;
  const page = Number(req.query.page) || 1;

  const orderBy = req.query.orderBy === "desc" ? "desc" : "asc";

  const entity = await entityValidationImpl(req);

  const sortBy = req.query.sortBy as string;

  if (!ignoreFieldsValidation) {
    if (sortBy) {
      await validateEntityFields(entity, [sortBy]);
    }
  }

  return {
    take,
    page,
    orderBy,
    sortBy,
  };
};