From d3b37dbc5a4cd04cddd1b94a2317f2f02eea86bc Mon Sep 17 00:00:00 2001 From: stevereis <stevereis93@gmail.com> Date: Tue, 28 Sep 2021 14:08:00 +0200 Subject: [PATCH] WIP : add union type for testing purpose --- .../engine/connectors/exareme/converters.ts | 2 +- .../models/experiment/experiment.model.ts | 29 ++++++++++++++++--- .../result/{ => common}/result.model.ts | 0 .../models/result/dummy-result.model.ts | 14 +++++++++ .../models/result/table-result.model.ts | 2 +- api/src/schema.gql | 22 ++++++++++---- 6 files changed, 58 insertions(+), 11 deletions(-) rename api/src/engine/models/result/{ => common}/result.model.ts (100%) create mode 100644 api/src/engine/models/result/dummy-result.model.ts diff --git a/api/src/engine/connectors/exareme/converters.ts b/api/src/engine/connectors/exareme/converters.ts index ba948ad..5c4c2ad 100644 --- a/api/src/engine/connectors/exareme/converters.ts +++ b/api/src/engine/connectors/exareme/converters.ts @@ -122,6 +122,6 @@ export const dataToTransient = (data: TransientDataResult): Experiment => { return { title: data.name, - result: tables, + results: tables, }; }; diff --git a/api/src/engine/models/experiment/experiment.model.ts b/api/src/engine/models/experiment/experiment.model.ts index 42dd04f..bf08812 100644 --- a/api/src/engine/models/experiment/experiment.model.ts +++ b/api/src/engine/models/experiment/experiment.model.ts @@ -1,5 +1,26 @@ -import { Field, GraphQLISODateTime, ObjectType } from '@nestjs/graphql'; -import { Result } from '../result/result.model'; +import { + createUnionType, + Field, + GraphQLISODateTime, + ObjectType, +} from '@nestjs/graphql'; +import { DummyResult } from '../result/dummy-result.model'; +import { TableResult } from '../result/table-result.model'; + +export const ResultUnion = createUnionType({ + name: 'ResultUnion', + types: () => [TableResult, DummyResult], + resolveType(value) { + if (value.metadatas) { + return TableResult; + } + if (value.listMax) { + return DummyResult; + } + + return null; + }, +}); @ObjectType() export class Experiment { @@ -18,6 +39,6 @@ export class Experiment { @Field(() => GraphQLISODateTime, { nullable: true }) finished_at?: Date; - @Field(() => [Result]) - result: Result[]; + @Field(() => [ResultUnion]) + results: Array<typeof ResultUnion>; } diff --git a/api/src/engine/models/result/result.model.ts b/api/src/engine/models/result/common/result.model.ts similarity index 100% rename from api/src/engine/models/result/result.model.ts rename to api/src/engine/models/result/common/result.model.ts diff --git a/api/src/engine/models/result/dummy-result.model.ts b/api/src/engine/models/result/dummy-result.model.ts new file mode 100644 index 0000000..99e36f5 --- /dev/null +++ b/api/src/engine/models/result/dummy-result.model.ts @@ -0,0 +1,14 @@ +import { Field, ObjectType } from '@nestjs/graphql'; +import { Result } from './common/result.model'; + +@ObjectType() +export class DummyResult extends Result { + @Field() + name: string; + + @Field(() => [[String]]) + data: string[][]; + + @Field(() => [String]) + listMax: string[]; +} diff --git a/api/src/engine/models/result/table-result.model.ts b/api/src/engine/models/result/table-result.model.ts index 226de83..aa732d7 100644 --- a/api/src/engine/models/result/table-result.model.ts +++ b/api/src/engine/models/result/table-result.model.ts @@ -1,6 +1,6 @@ import { Field, ObjectType } from '@nestjs/graphql'; import { MetaData } from './common/metadata.model'; -import { Result } from './result.model'; +import { Result } from './common/result.model'; @ObjectType() export class TableResult extends Result { diff --git a/api/src/schema.gql b/api/src/schema.gql index 8d97521..f51b333 100644 --- a/api/src/schema.gql +++ b/api/src/schema.gql @@ -34,8 +34,9 @@ type Domain { rootGroup: Group! } -type Result { - groupBy: String +type MetaData { + name: String! + type: String! } type Experiment { @@ -44,7 +45,7 @@ type Experiment { created_at: DateTime update_at: DateTime finished_at: DateTime - result: [Result!]! + results: [ResultUnion!]! } """ @@ -52,9 +53,20 @@ A date-time string at UTC, such as 2019-12-03T09:54:33Z, compliant with the date """ scalar DateTime -type MetaData { +union ResultUnion = TableResult | DummyResult + +type TableResult { + groupBy: String name: String! - type: String! + data: [[String!]!]! + metadatas: [MetaData!]! +} + +type DummyResult { + groupBy: String + name: String! + data: [[String!]!]! + listMax: [String!]! } type Query { -- GitLab