From c330b3fb176c6038e3b5425c99d49b3a099026a3 Mon Sep 17 00:00:00 2001
From: stevereis <stevereis93@gmail.com>
Date: Sun, 23 Jan 2022 20:41:13 +0100
Subject: [PATCH] fix: Catch convert problem jsonata (exareme)

---
 .../engine/connectors/exareme/converters.ts   | 35 ++++++++++++-------
 .../connectors/exareme/main.connector.ts      |  4 ++-
 2 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/api/src/engine/connectors/exareme/converters.ts b/api/src/engine/connectors/exareme/converters.ts
index 593a44d..06950ab 100644
--- a/api/src/engine/connectors/exareme/converters.ts
+++ b/api/src/engine/connectors/exareme/converters.ts
@@ -167,19 +167,28 @@ export const descriptiveDataToTableResult = (
   return [result];
 };
 
-export const dataToExperiment = (data: ExperimentData): Experiment => {
-  const expTransform = transformToExperiment.evaluate(data);
-
-  const exp: Experiment = {
-    ...expTransform,
-    results: [],
-  };
-
-  exp.results = data.result
-    ? data.result.map((result) => dataToResult(result, exp.algorithm.id)).flat()
-    : [];
-
-  return exp;
+export const dataToExperiment = (
+  data: ExperimentData,
+): Experiment | undefined => {
+  try {
+    const expTransform = transformToExperiment.evaluate(data);
+
+    const exp: Experiment = {
+      ...expTransform,
+      results: [],
+    };
+
+    exp.results = data.result
+      ? data.result
+          .map((result) => dataToResult(result, exp.algorithm.id))
+          .flat()
+      : [];
+
+    return exp;
+  } catch (e) {
+    //TODO : Add logger can't convert experiment
+    return undefined;
+  }
 };
 
 export const dataToAlgorithms = (data: string): Algorithm[] => {
diff --git a/api/src/engine/connectors/exareme/main.connector.ts b/api/src/engine/connectors/exareme/main.connector.ts
index 5733366..ffd1daf 100644
--- a/api/src/engine/connectors/exareme/main.connector.ts
+++ b/api/src/engine/connectors/exareme/main.connector.ts
@@ -74,7 +74,9 @@ export default class ExaremeService implements IEngineService {
 
     return {
       ...resultAPI.data,
-      experiments: resultAPI.data.experiments?.map(dataToExperiment) ?? [],
+      experiments:
+        resultAPI.data.experiments?.map(dataToExperiment).filter((r) => r) ??
+        [],
     };
   }
 
-- 
GitLab