import StatusCodes from '../enums/StatusCodes'; /** ****************************************************************************** * Request/Response ******************************************************************************* */ export interface IRequest {} export interface IResponse { status: StatusCodes; error?: IError; } /** ****************************************************************************** * Authentication ******************************************************************************* */ export interface IAuthenticationData { userId: string; email: string; token: string; ipAddress?: string; } export interface IAuthenticatedRequest extends IRequest { auth: IAuthenticationData; } export interface IAuthenticatedOptionalRequest extends IRequest { auth: Partial; } /** ****************************************************************************** * Authorization ******************************************************************************* */ export interface IAuthorizationData extends IAuthenticationData { organizationId: string; } export interface IAuthorizedRequest extends IRequest { auth: IAuthorizationData; } export interface AuthorizedOptionalRequest extends IRequest { auth: Partial; } /** ****************************************************************************** * Delete ******************************************************************************* */ export interface IDeleteResponse extends IResponse { deleted: boolean } /** ****************************************************************************** * Error Handling ******************************************************************************* */ export interface IError { message: string; fields?: Record; } export function toError(message: string): IError { const error: IError = { message, }; return error; } /** ****************************************************************************** * DEPRECATED -- See models/utils/JoiUtil.ts for new Joi helpers ******************************************************************************* */ export function joiToError(joiError: any): IError { let message = 'There was an error processing your request. Please contact support.'; if (joiError && joiError.details && joiError.details[0]) { message = joiError.details[0].message; } else { message = joiError.message; } const error: IError = { message, }; return error; }