diff --git a/api/src/engine/models/experiment/experiment.model.ts b/api/src/engine/models/experiment/experiment.model.ts index 2ac6ec204f2f1021f8f5963771b37362cbce7b18..06e28b4b2e1c93e8dac7c6e7dc828c706f370c8a 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 0000000000000000000000000000000000000000..8146c69d275fb1c91eff2ec63a92812ee8086f07 --- /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 ca86bfb4e109c44d0d4c06ea0e70ac05e3bf656a..e5e059738c16bb8297558add9aa51e7bce9791e2 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 0000000000000000000000000000000000000000..fb11ba57403c420f7c3a5be903fdd4d9e8ee6686 --- /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[]; +}