utils.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import * as express from 'express'
  2. import { query, validationResult } from 'express-validator'
  3. import { logger } from '../../helpers/logger'
  4. import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes'
  5. function areValidationErrors (req: express.Request, res: express.Response) {
  6. const errors = validationResult(req)
  7. if (!errors.isEmpty()) {
  8. logger.warn('Incorrect request parameters', { path: req.originalUrl, err: errors.mapped() })
  9. res.status(HttpStatusCode.BAD_REQUEST_400)
  10. .json({ errors: errors.mapped() })
  11. return true
  12. }
  13. return false
  14. }
  15. function checkSort (sortableColumns: string[]) {
  16. return [
  17. query('sort').optional().isIn(sortableColumns).withMessage('Should have correct sortable column'),
  18. (req: express.Request, res: express.Response, next: express.NextFunction) => {
  19. logger.debug('Checking sort parameters', { parameters: req.query })
  20. if (areValidationErrors(req, res)) return
  21. return next()
  22. }
  23. ]
  24. }
  25. function createSortableColumns (sortableColumns: string[]) {
  26. const sortableColumnDesc = sortableColumns.map(sortableColumn => '-' + sortableColumn)
  27. return sortableColumns.concat(sortableColumnDesc)
  28. }
  29. // ---------------------------------------------------------------------------
  30. export {
  31. areValidationErrors,
  32. checkSort,
  33. createSortableColumns
  34. }