File size: 1,096 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
28
29
30
31
32
33
34
35
36
37
38
39
40
import {
  PermissionsException,
  PermissionsExceptionCode,
} from 'src/engine/metadata-modules/permissions/permissions.exception';
import {
  ChartDataException,
  ChartDataExceptionCode,
  generateChartDataExceptionMessage,
} from 'src/modules/dashboard/chart-data/exceptions/chart-data.exception';

export const wrapChartDataQueryError = (
  error: unknown,
  contextPrefix: string,
): ChartDataException => {
  if (error instanceof ChartDataException) {
    return error;
  }

  if (
    error instanceof PermissionsException &&
    error.code === PermissionsExceptionCode.PERMISSION_DENIED
  ) {
    return new ChartDataException(
      generateChartDataExceptionMessage(
        ChartDataExceptionCode.PERMISSION_DENIED,
        error.message,
      ),
      ChartDataExceptionCode.PERMISSION_DENIED,
    );
  }

  return new ChartDataException(
    generateChartDataExceptionMessage(
      ChartDataExceptionCode.QUERY_EXECUTION_FAILED,
      `${contextPrefix}: ${error instanceof Error ? error.message : String(error)}`,
    ),
    ChartDataExceptionCode.QUERY_EXECUTION_FAILED,
  );
};