Untitled

 avatar
unknown
plain_text
a year ago
2.0 kB
6
Indexable
import {
  MissingEnvironmentVariableError,
  isMissingEnvironmentVariableError,
} from "@lambdas/shared/configuration";
import {
  UnsupportedEnvironmentNameError,
  isUnsupportedEnvironmentNameError,
} from "@lambdas/shared/configuration/unsupportedEnvironmentNameError";
import { HTTP_CODES } from "@lambdas/shared/constants";
import { Response, sendError, sendSuccess } from "@lambdas/shared/helpers";
import { KycAuditTrail } from "@lambdas/shared/models/KycAuditTrail";
import {
  DatabaseQueryError,
  isDatabaseQueryError,
} from "@lambdas/shared/types";

import { AuditTrailQueryParserError } from "./getAuditTrailQueryParser";

type Errors =
  | MissingEnvironmentVariableError
  | DatabaseQueryError
  | UnsupportedEnvironmentNameError
  | AuditTrailQueryParserError;

export const encodeError = (error: Errors): Response => {
  if (isMissingEnvironmentVariableError(error)) {
    return sendError({
      status: HTTP_CODES.INTERNAL_SERVER_ERROR,
      messageCode: "missingEnvironmentVariable",
      message: `Missing environment variable with name: ${error.variableName}`,
    });
  } else if (isDatabaseQueryError(error)) {
    return sendError({
      status: HTTP_CODES.INTERNAL_SERVER_ERROR,
      messageCode: "infrastructureError",
      message: `Unexpected database error while processing this request: ${String(
        error.error
      )}.`,
    });
  } else if (isUnsupportedEnvironmentNameError(error)) {
    return sendError({
      status: HTTP_CODES.INTERNAL_SERVER_ERROR,
      messageCode: "UnsupportedEnvironmentNameError",
      message: `Unsupported Environment Name Error: ${error.environmentName}`,
    });
  } else {
    return sendError({
      status: HTTP_CODES.CLIENT_ERROR,
      messageCode: "invalidRequest",
      message: error.reasons,
    });
  }
};

export const encodeSuccess = (data: ReadonlyArray<KycAuditTrail>): Response =>
  sendSuccess({ status: HTTP_CODES.OK, data });
Editor is loading...
Leave a Comment