diff --git a/api/src/engine/connectors/datashield/main.connector.ts b/api/src/engine/connectors/datashield/main.connector.ts index 1cdbb509c93a78794235c371c6fb3a62076b4792..c5784b7914d89e62ac7feaab3635692166976889 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 aa0b30f4bb9cab2cb917062b5dcc222481bc042e..c3dea2df35773cafe6341fa1b79b201657903d09 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 0d90e92e62de3e342cc206f4579a2bf399df1f36..5289075ea86bbcae6d7fd333b5bcf76985598dc0 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 e3de433e113e0e13577372240cda4114aa02a193..c75c68e9c5d4a482a13dbef9878d3e211d978b13 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 c2ebe062948d88d817911b41942288f96c926b25..39dd34e76af27f6833af38d7a3f53aacf41be2f1 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 {