diff --git a/api/.env.defaults b/api/.env.defaults index 63d5e94dc49793acee86be230ae90ff3783eff32..7aa23bc0b63222983056a8a04b5b59bab3254f9d 100644 --- a/api/.env.defaults +++ b/api/.env.defaults @@ -1,3 +1,3 @@ -ENGINE_TYPE=exareme +ENGINE_TYPE=csv ENGINE_BASE_URL=http://127.0.0.1:8080/services/ GATEWAY_PORT=8081 \ No newline at end of file diff --git a/api/src/engine/connectors/csv/main.connector.ts b/api/src/engine/connectors/csv/main.connector.ts new file mode 100644 index 0000000000000000000000000000000000000000..bcb8c7ee8ae11d0bb8dea161b198fe83fbc36b5a --- /dev/null +++ b/api/src/engine/connectors/csv/main.connector.ts @@ -0,0 +1,123 @@ +import { firstValueFrom, Observable } from 'rxjs'; +import { IEngineOptions, IEngineService } from 'src/engine/engine.interfaces'; +import { Domain } from 'src/engine/models/domain.model'; +import { ExperimentCreateInput } from 'src/engine/models/experiment/input/experiment-create.input'; +import { + Experiment, + PartialExperiment, +} from 'src/engine/models/experiment/experiment.model'; +import { ListExperiments } from 'src/engine/models/experiment/list-experiments.model'; +import { ExperimentEditInput } from 'src/engine/models/experiment/input/experiment-edit.input'; +import { Algorithm } from 'src/engine/models/experiment/algorithm.model'; +import { HttpService } from '@nestjs/axios'; + +export default class CSVService implements IEngineService { + constructor( + private readonly options: IEngineOptions, + private readonly httpService: HttpService, + ) {} + + 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.'); + } + + async getDomains(): Promise<Domain[]> { + const path = + 'https://docs.google.com/spreadsheets/d/e/2PACX-1vSuqAuC9YZkWbY-eU_zh9-lEh7tBUwSj2TGA_flvGkQ3KdA82RZchHICl6zbffl8yZ39IwPtNgk15Wd/pub?gid=0&single=true&output=tsv'; + + const { data } = await firstValueFrom(this.httpService.get<string>(path)); + + console.log(data.split('\n').map((row) => row.split('\t'))); + + return [ + { + id: 'Dummy', + label: 'Dummy', + datasets: [{ id: 'DummyDataset', label: 'DummyDataset' }], + groups: [ + { + id: 'DummyGroup', + variables: ['DummyVar'], + groups: [], + }, + ], + rootGroup: { id: 'DummyGroup' }, + variables: [{ id: 'DummyVar', type: 'string' }], + }, + ]; + } + + getActiveUser(): string { + const dummyUser = { + username: 'anonymous', + subjectId: 'anonymousId', + fullname: 'anonymous', + email: 'anonymous@anonymous.com', + agreeNDA: true, + }; + return JSON.stringify(dummyUser); + } + + editActiveUser(): Observable<string> { + throw new Error('Method not implemented.'); + } + + getExperimentREST(): Observable<string> { + throw new Error('Method not implemented.'); + } + + deleteExperiment(): Observable<string> { + throw new Error('Method not implemented.'); + } + + editExperimentREST(): Observable<string> { + throw new Error('Method not implemented.'); + } + + startExperimentTransient(): Observable<string> { + throw new Error('Method not implemented.'); + } + + startExperiment(): Observable<string> { + throw new Error('Method not implemented.'); + } + + getExperiments(): string { + return '[]'; + } + + getAlgorithmsREST(): string { + return '[]'; + } +}