import { ValidationError } from '@nestjs/common';
import { ApiError } from './api-error';
import { ApiErrorCodes } from './api-error-codes';

export function makeApiErrorFromValidation(
  errors: ValidationError[],
): ApiError {
  const constraints =
    errors.length > 0 && errors[0].constraints ? errors[0].constraints : {};
  const errorMessages = {
    field: errors[0].property,
    constraint: Object.keys(constraints)[0],
  };
  const constraints_key = Object.values(constraints).join('. ').trim();
  let code;
  if (constraints_key === 'isNotEmpty') {
    code = 'PARAM_EMPTY';
  } else {
    code = 'PARAM_BAD_FORMAT';
  }
  return new ApiError(
    constraints_key,
    ApiErrorCodes[code as ApiErrorCodes],
    errorMessages,
  );
}
