From ee2d14d399b773aa1858f9fdf6dc6b37ef0f4bbe Mon Sep 17 00:00:00 2001 From: stevereis <stevereis93@gmail.com> Date: Wed, 13 Oct 2021 14:40:50 +0200 Subject: [PATCH] Simplify group data needed from engines --- .../connectors/datashield/main.connector.ts | 42 +++++++++++++++---- .../engine/connectors/exareme/converters.ts | 4 +- api/src/engine/models/domain.model.ts | 13 +++++- api/src/engine/models/group.model.ts | 5 +-- api/src/engine/models/variable.model.ts | 8 ++-- api/src/schema.gql | 14 ++++--- 6 files changed, 64 insertions(+), 22 deletions(-) diff --git a/api/src/engine/connectors/datashield/main.connector.ts b/api/src/engine/connectors/datashield/main.connector.ts index 4a0f222..3ee3fbb 100644 --- a/api/src/engine/connectors/datashield/main.connector.ts +++ b/api/src/engine/connectors/datashield/main.connector.ts @@ -14,38 +14,66 @@ export default class DataShieldService implements IEngineService { getAlgorithms(): Algorithm[] | Promise<Algorithm[]> { throw new Error('Method not implemented.'); } + createExperiment( data: ExperimentCreateInput, isTransient: boolean, ): Experiment | Promise<Experiment> { throw new Error('Method not implemented.'); } + listExperiments( page: number, name: string, ): ListExperiments | Promise<ListExperiments> { throw new Error('Method not implemented.'); } + getExperiment(uuid: string): Experiment | Promise<Experiment> { throw new Error('Method not implemented.'); } + removeExperiment( uuid: string, ): PartialExperiment | Promise<PartialExperiment> { throw new Error('Method not implemented.'); } + editExperient( uuid: string, expriment: ExperimentEditInput, ): Experiment | Promise<Experiment> { throw new Error('Method not implemented.'); } + getDomains(): Domain[] { - throw new Error('Method not implemented.'); + return [ + { + id: 'Dummy', + label: 'Dummy', + datasets: [{ id: 'DummyDataSet' }], + groups: [ + { + id: 'DummyGroup', + variables: ['DummyVar'], + groups: [], + }, + ], + rootGroup: { id: 'DummyGroup', variables: [], groups: [] }, + variables: [{ id: 'DummyVar', type: 'string' }], + }, + ]; } - getActiveUser(): Observable<string> { - throw new Error('Method not implemented.'); + getActiveUser(): string { + const dummyUser = { + username: 'anonymous', + subjectId: 'anonymousId', + fullname: 'anonymous', + email: 'anonymous@anonymous.com', + agreeNDA: true, + }; + return JSON.stringify(dummyUser); } editActiveUser(): Observable<string> { @@ -72,11 +100,11 @@ export default class DataShieldService implements IEngineService { throw new Error('Method not implemented.'); } - getExperiments(): Observable<string> { - throw new Error('Method not implemented.'); + getExperiments(): string { + return '[]'; } - getAlgorithmsREST(): Observable<string> { - throw new Error('Method not implemented.'); + getAlgorithmsREST(): string { + return '[]'; } } diff --git a/api/src/engine/connectors/exareme/converters.ts b/api/src/engine/connectors/exareme/converters.ts index 8081104..07fb2b4 100644 --- a/api/src/engine/connectors/exareme/converters.ts +++ b/api/src/engine/connectors/exareme/converters.ts @@ -28,7 +28,9 @@ export const dataToGroup = (data: Hierarchy): Group => { id: data.code, label: data.label, groups: data.groups ? data.groups.map(dataToGroup) : [], - variables: data.variables ? data.variables.map(dataToVariable) : [], + variables: data.variables + ? data.variables.map((data: VariableEntity) => data.code) + : [], }; }; diff --git a/api/src/engine/models/domain.model.ts b/api/src/engine/models/domain.model.ts index 8c3c593..f5b8def 100644 --- a/api/src/engine/models/domain.model.ts +++ b/api/src/engine/models/domain.model.ts @@ -1,9 +1,20 @@ import { Field, ObjectType } from '@nestjs/graphql'; import { Category } from './category.model'; +import { Entity } from './entity.model'; import { Group } from './group.model'; +import { Variable } from './variable.model'; @ObjectType() -export class Domain extends Group { +export class Domain extends Entity { + @Field({ nullable: true }) + description?: string; + + @Field(() => [Group]) + groups: Group[]; + + @Field(() => [Variable]) + variables: Variable[]; + @Field(() => [Category]) datasets: Category[]; diff --git a/api/src/engine/models/group.model.ts b/api/src/engine/models/group.model.ts index c2087ba..0cb97a4 100644 --- a/api/src/engine/models/group.model.ts +++ b/api/src/engine/models/group.model.ts @@ -1,6 +1,5 @@ import { Field, ObjectType } from '@nestjs/graphql'; import { Entity } from './entity.model'; -import { Variable } from './variable.model'; @ObjectType() export class Group extends Entity { @@ -10,6 +9,6 @@ export class Group extends Entity { @Field(() => [Group]) groups: Group[]; - @Field(() => [Variable]) - variables: Variable[]; + @Field(() => [String], { description: "List of variable's ids" }) + variables: string[]; } diff --git a/api/src/engine/models/variable.model.ts b/api/src/engine/models/variable.model.ts index e3c4098..8650f48 100644 --- a/api/src/engine/models/variable.model.ts +++ b/api/src/engine/models/variable.model.ts @@ -11,9 +11,9 @@ export class Variable extends Entity { @Field({ nullable: true }) description?: string; - @Field(() => [Category]) - enumerations: Category[]; + @Field(() => [Category], { nullable: true, defaultValue: [] }) + enumerations?: Category[]; - @Field(() => [Group]) - groups: Group[]; + @Field(() => [Group], { nullable: true, defaultValue: [] }) + groups?: Group[]; } diff --git a/api/src/schema.gql b/api/src/schema.gql index aad6841..ee828b1 100644 --- a/api/src/schema.gql +++ b/api/src/schema.gql @@ -7,21 +7,23 @@ type Category { label: String } -type Variable { +type Group { id: String! label: String - type: String! description: String - enumerations: [Category!]! groups: [Group!]! + + """List of variable's ids""" + variables: [String!]! } -type Group { +type Variable { id: String! label: String + type: String! description: String - groups: [Group!]! - variables: [Variable!]! + enumerations: [Category!] + groups: [Group!] } type Domain { -- GitLab