From b69d97b1b9c09632e922df2c1d5c4269ba5ddd4c Mon Sep 17 00:00:00 2001
From: stevereis <stevereis93@gmail.com>
Date: Wed, 6 Oct 2021 09:45:02 +0200
Subject: [PATCH] Removing groupby on all results Add GroupsResult for tab
 display

---
 .../models/experiment/experiment.model.ts     | 25 ++-----------------
 .../result/common/result-union.model.ts       | 18 +++++++++++++
 .../models/result/common/result.model.ts      |  7 ++----
 .../models/result/groups-result.model.ts      | 18 +++++++++++++
 4 files changed, 40 insertions(+), 28 deletions(-)
 create mode 100644 api/src/engine/models/result/common/result-union.model.ts
 create mode 100644 api/src/engine/models/result/groups-result.model.ts

diff --git a/api/src/engine/models/experiment/experiment.model.ts b/api/src/engine/models/experiment/experiment.model.ts
index 2ac6ec2..06e28b4 100644
--- a/api/src/engine/models/experiment/experiment.model.ts
+++ b/api/src/engine/models/experiment/experiment.model.ts
@@ -1,28 +1,7 @@
-import {
-  createUnionType,
-  Field,
-  ObjectType,
-  PartialType,
-} from '@nestjs/graphql';
-import { RawResult } from '../result/raw-result.model';
-import { TableResult } from '../result/table-result.model';
+import { Field, ObjectType, PartialType } from '@nestjs/graphql';
+import { ResultUnion } from '../result/common/result-union.model';
 import { Algorithm } from './algorithm.model';
 
-export const ResultUnion = createUnionType({
-  name: 'ResultUnion',
-  types: () => [TableResult, RawResult],
-  resolveType(value) {
-    if (value.headers) {
-      return TableResult;
-    }
-    if (value.listMax) {
-      return RawResult;
-    }
-
-    return null;
-  },
-});
-
 @ObjectType()
 export class Experiment {
   @Field({ nullable: true })
diff --git a/api/src/engine/models/result/common/result-union.model.ts b/api/src/engine/models/result/common/result-union.model.ts
new file mode 100644
index 0000000..8146c69
--- /dev/null
+++ b/api/src/engine/models/result/common/result-union.model.ts
@@ -0,0 +1,18 @@
+import { createUnionType } from '@nestjs/graphql';
+import { RawResult } from '../raw-result.model';
+import { TableResult } from '../table-result.model';
+
+export const ResultUnion = createUnionType({
+  name: 'ResultUnion',
+  types: () => [TableResult, RawResult],
+  resolveType(value) {
+    if (value.headers) {
+      return TableResult;
+    }
+    if (value.listMax) {
+      return RawResult;
+    }
+
+    return null;
+  },
+});
diff --git a/api/src/engine/models/result/common/result.model.ts b/api/src/engine/models/result/common/result.model.ts
index ca86bfb..e5e0597 100644
--- a/api/src/engine/models/result/common/result.model.ts
+++ b/api/src/engine/models/result/common/result.model.ts
@@ -1,7 +1,4 @@
-import { Field, ObjectType } from '@nestjs/graphql';
+import { ObjectType } from '@nestjs/graphql';
 
 @ObjectType()
-export abstract class Result {
-  @Field({ nullable: true })
-  groupBy?: string;
-}
+export abstract class Result {}
diff --git a/api/src/engine/models/result/groups-result.model.ts b/api/src/engine/models/result/groups-result.model.ts
new file mode 100644
index 0000000..fb11ba5
--- /dev/null
+++ b/api/src/engine/models/result/groups-result.model.ts
@@ -0,0 +1,18 @@
+import { Field, ObjectType } from '@nestjs/graphql';
+import { ResultUnion } from './common/result-union.model';
+import { Result } from './common/result.model';
+
+@ObjectType()
+export class GroupResult {
+  @Field()
+  name: string;
+
+  @Field(() => [ResultUnion])
+  results: Array<typeof ResultUnion>;
+}
+
+@ObjectType()
+export class GroupsResult extends Result {
+  @Field(() => [GroupResult])
+  groups: GroupResult[];
+}
-- 
GitLab