diff --git a/api/src/engine/connectors/csv/main.connector.ts b/api/src/engine/connectors/csv/main.connector.ts index c9c2b6fd71a69082dbfc95d670c0a8d7a9d4ee87..bb5d0aaf32842b862904a1bfc177b5e1beef2c24 100644 --- a/api/src/engine/connectors/csv/main.connector.ts +++ b/api/src/engine/connectors/csv/main.connector.ts @@ -31,14 +31,29 @@ export default class CSVService implements IEngineService { data: ExperimentCreateInput, isTransient: boolean, ): Experiment | Promise<Experiment> { - throw new Error('Method not implemented.'); + return { + id: '', + domain: '', + datasets: [], + algorithm: { + id: '', + description: '', + }, + name: 'test', + variables: [], + }; } listExperiments( page: number, name: string, ): ListExperiments | Promise<ListExperiments> { - throw new Error('Method not implemented.'); + return { + experiments: [], + currentPage: 0, + totalExperiments: 0, + totalPages: 0, + }; } getExperiment(id: string): Experiment | Promise<Experiment> { @@ -83,35 +98,40 @@ export default class CSVService implements IEngineService { row.shift(); // get ride of the variable name, keep only groups - vars.push(variable); + if (!vars.find((v) => v.id === variable.id)) vars.push(variable); // avoid duplicate - row - .filter((group) => !groups[group.toLowerCase()]) - .forEach((group, i) => { - const groupId = group.toLowerCase(); - if (i === 0) rootGroup.groups.push(groupId); - groups[groupId] = { - id: groupId, - label: group, - variables: [], - groups: [], - }; - }); + let pathId = ''; + + row.forEach((group, i) => { + const groupId = `${pathId}/${group.toLowerCase()}`; + pathId = groupId; + if (groups[groupId]) return; + if (i === 0) { + rootGroup.groups.push(groupId); + } + groups[groupId] = { + id: groupId, + label: group, + variables: [], + groups: [], + }; + }); - const groupId = row[row.length - 1].toLowerCase(); // group's variable container + const groupId = pathId; // group's variable container groups[groupId].variables.push(variable.id); // add variable - row + row // fill groups with childrens .reverse() .map((group) => group.toLowerCase()) .forEach((group, i) => { - const groupId = group.toLowerCase(); + const id = pathId; + pathId = pathId.replace(`/${group}`, ''); if (i !== row.length - 1) { - const parentId = row[i + 1].toLowerCase(); - if (groups[parentId].groups.indexOf(groupId) === -1) - groups[parentId].groups.push(groupId); + const parentId = pathId; + if (groups[parentId].groups.indexOf(id) === -1) + groups[parentId].groups.push(id); } }); }); diff --git a/api/src/engine/interceptors/headers.interceptor.ts b/api/src/engine/interceptors/headers.interceptor.ts index 8dddccb93815c21cb0f92c79bd97d4fb293bfd35..385d6e56d579b562d7c797c556e8e0b8b9d91504 100644 --- a/api/src/engine/interceptors/headers.interceptor.ts +++ b/api/src/engine/interceptors/headers.interceptor.ts @@ -56,7 +56,7 @@ export class HeadersInterceptor implements NestInterceptor { return next.handle().pipe( catchError((e) => { - if (!e.response.data || !e.response.status) return e; + if (!e.response || !e.response.data || !e.response.status) throw e; this.logger.log(e.message); this.logger.verbose(