From 07e753caba2f4f5f1563e839329a27500a25718e Mon Sep 17 00:00:00 2001 From: Steve Reis <stevereis93@gmail.com> Date: Thu, 30 Sep 2021 15:08:33 +0200 Subject: [PATCH] WIP : uniform experiment and transient --- .../engine/connectors/datashield/main.connector.ts | 5 +++++ .../engine/connectors/exareme/main.connector.ts | 5 +++++ api/src/engine/engine.interfaces.ts | 14 ++++++++++---- api/src/engine/engine.resolver.ts | 8 ++++++-- api/src/schema.gql | 2 +- 5 files changed, 27 insertions(+), 7 deletions(-) diff --git a/api/src/engine/connectors/datashield/main.connector.ts b/api/src/engine/connectors/datashield/main.connector.ts index 1cdbb50..c5784b7 100644 --- a/api/src/engine/connectors/datashield/main.connector.ts +++ b/api/src/engine/connectors/datashield/main.connector.ts @@ -5,6 +5,11 @@ import { ExperimentCreateInput } from 'src/engine/models/experiment/experiment-c import { Experiment } from 'src/engine/models/experiment/experiment.model'; export default class DataShieldService implements IEngineService { + createExperiment( + data: ExperimentCreateInput, + ): Experiment | Promise<Experiment> { + throw new Error('Method not implemented.'); + } createTransient( data: ExperimentCreateInput, ): Experiment | Promise<Experiment> { diff --git a/api/src/engine/connectors/exareme/main.connector.ts b/api/src/engine/connectors/exareme/main.connector.ts index aa0b30f..c3dea2d 100644 --- a/api/src/engine/connectors/exareme/main.connector.ts +++ b/api/src/engine/connectors/exareme/main.connector.ts @@ -24,6 +24,11 @@ export default class ExaremeService implements IEngineService { private readonly options: IEngineOptions, private readonly httpService: HttpService, ) {} + createExperiment( + data: ExperimentCreateInput, + ): Experiment | Promise<Experiment> { + throw new Error('Method not implemented.'); + } async createTransient(data: ExperimentCreateInput): Promise<Experiment> { const form = experimentInputToData(data); diff --git a/api/src/engine/engine.interfaces.ts b/api/src/engine/engine.interfaces.ts index 0d90e92..5289075 100644 --- a/api/src/engine/engine.interfaces.ts +++ b/api/src/engine/engine.interfaces.ts @@ -10,8 +10,18 @@ export interface IEngineOptions { } export interface IEngineService { + //GraphQL getDomains(ids: string[]): Domain[] | Promise<Domain[]>; + createTransient( + data: ExperimentCreateInput, + ): Promise<Experiment> | Experiment; + + createExperiment( + data: ExperimentCreateInput, + ): Promise<Experiment> | Experiment; + + // Standard REST API call getAlgorithms(request: Request): Observable<string>; getExperiments(request: Request): Observable<string>; @@ -24,10 +34,6 @@ export interface IEngineService { startExperimentTransient(request: Request): Observable<string>; - createTransient( - data: ExperimentCreateInput, - ): Promise<Experiment> | Experiment; - startExperiment(request: Request): Observable<string>; getActiveUser(request: Request): Observable<string>; diff --git a/api/src/engine/engine.resolver.ts b/api/src/engine/engine.resolver.ts index e3de433..c75c68e 100644 --- a/api/src/engine/engine.resolver.ts +++ b/api/src/engine/engine.resolver.ts @@ -21,9 +21,13 @@ export class EngineResolver { } @Mutation(() => Experiment) - async createTransient( + async createExperiment( @Args('data') experimentCreateInput: ExperimentCreateInput, + @Args('transient', { nullable: true, defaultValue: false }) + isTransient: boolean, ) { - return this.engineService.createTransient(experimentCreateInput); + return isTransient + ? this.engineService.createTransient(experimentCreateInput) + : this.engineService.createExperiment(experimentCreateInput); } } diff --git a/api/src/schema.gql b/api/src/schema.gql index c2ebe06..39dd34e 100644 --- a/api/src/schema.gql +++ b/api/src/schema.gql @@ -74,7 +74,7 @@ type Query { } type Mutation { - createTransient(data: ExperimentCreateInput!): Experiment! + createExperiment(transient: Boolean = false, data: ExperimentCreateInput!): Experiment! } input ExperimentCreateInput { -- GitLab