File size: 1,020 Bytes
d9494a5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { assertUnreachable } from 'twenty-shared/utils';

import { ObjectMetadataExceptionCode } from 'src/engine/metadata-modules/object-metadata/object-metadata.exception';

export const objectMetadataExceptionCodeToHttpStatus = (
  code: ObjectMetadataExceptionCode,
): number => {
  switch (code) {
    case ObjectMetadataExceptionCode.OBJECT_METADATA_NOT_FOUND:
      return 404;
    case ObjectMetadataExceptionCode.OBJECT_ALREADY_EXISTS:
      return 409;
    case ObjectMetadataExceptionCode.OBJECT_MUTATION_NOT_ALLOWED:
    case ObjectMetadataExceptionCode.NAME_CONFLICT:
      return 403;
    case ObjectMetadataExceptionCode.INVALID_OBJECT_INPUT:
    case ObjectMetadataExceptionCode.MISSING_CUSTOM_OBJECT_DEFAULT_LABEL_IDENTIFIER_FIELD:
    case ObjectMetadataExceptionCode.APPLICATION_NOT_FOUND:
      return 400;
    case ObjectMetadataExceptionCode.INTERNAL_SERVER_ERROR:
    case ObjectMetadataExceptionCode.INVALID_ORM_OUTPUT:
      return 500;
    default:
      return assertUnreachable(code);
  }
};