import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { forkJoin } from 'rxjs';

import { Project, Dataset, Family } from '../model';
import { environment } from '../../../environments/environment';

@Injectable()
export class DatasetService {
    private API_PATH: string = environment.apiUrl;
    private instanceName: string = environment.instanceName;

    constructor(private http: HttpClient) { }

    retrieveDatasetSearchMeta() {
        const projectList = this.retrieveProjectList();
        const datasetList = this.retrieveDatasetList();
        const datasetFamilyList = this.retrieveDatasetFamilyList();

        return forkJoin([projectList, datasetList, datasetFamilyList]);
    }

    retrieveProjectList() {
        return this.http.get<Project[]>(this.API_PATH + '/project');
    }

    retrieveDatasetList() {
        return this.http.get<Dataset[]>(this.API_PATH + '/instance/' + this.instanceName + '/dataset');
    }

    retrieveDatasetFamilyList() {
        return this.http.get<Family[]>(this.API_PATH + '/instance/' + this.instanceName + '/dataset-family');
    }
}