// (C) 2007-2019 GoodData Corporation import { Application } from "express"; import { first, partial } from "lodash"; import { IMockProject, IProjectGroup } from "../../model/MockProject"; import * as HttpStatusCodes from "http-status-codes"; import { IUser } from "../../model/User"; import { profileUri } from "../../route/routes"; export interface ICsvDataSet { dataset: { datasetId: string; datasetLoadStatus: string; loadedRowCount: number; name: string; firstSuccessfulUpdate: { created: string; owner: { fullName: string; login: string; profileUri: string; }; }; }; } export interface ICsvDataSetsResponse { datasets: { items: ICsvDataSet[]; }; } function collectCsvDataSets(project: IMockProject): IProjectGroup[] { return project.groups.filter(group => group.meta.type === "csv"); } function createCsvDataSet(user: IUser, group: IProjectGroup): ICsvDataSet { return { dataset: { datasetId: group.meta.identifier, datasetLoadStatus: "OK", loadedRowCount: 1000, name: group.meta.identifier, firstSuccessfulUpdate: { created: "2015-12-18T10:20:35.532Z", owner: { fullName: `${user.firstName} ${user.lastName}`, login: user.login, profileUri: profileUri(user.identifier), }, }, }, }; } export const csv = { register(app: Application, project: IMockProject) { app.get( `/gdc/dataload/internal/projects/${project.project.meta.identifier}/csv/datasets`, (_req, res) => { const user = first(project.users); const body: ICsvDataSetsResponse = { datasets: { items: collectCsvDataSets(project).map(partial(createCsvDataSet, user)), }, }; res.status(HttpStatusCodes.OK).json(body); }, ); return app; }, };