mirror of
https://github.com/datahub-project/datahub.git
synced 2025-07-23 09:32:04 +00:00
43 lines
1.5 KiB
TypeScript
43 lines
1.5 KiB
TypeScript
import { IFunctionRouteHandler, IMirageRequest } from '@datahub/utils/types/vendor/ember-cli-mirage-deprecated';
|
|
import { IMirageWherehowsDBs } from 'wherehows-web/typings/ember-cli-mirage';
|
|
import { uniq } from 'lodash';
|
|
import { DatasetPlatform } from '@datahub/metadata-types/constants/entity/dataset/platform';
|
|
import { PlatformsWithSlash } from '@datahub/data-models/entity/dataset/utils/urn';
|
|
|
|
/**
|
|
* Will group by dataset name (path) for example:
|
|
* 1: /a/b/asd
|
|
* 2: /a/b/qwe
|
|
* 3: /c/dsds
|
|
*
|
|
* for root:
|
|
* /a/
|
|
* /c/
|
|
*
|
|
* for /a/:
|
|
* /a/b/
|
|
*
|
|
* for /a/b/:
|
|
* /a/b/asd
|
|
* /a/b/qwe
|
|
*/
|
|
export const getBrowsePlatform = function(
|
|
this: IFunctionRouteHandler,
|
|
{ datasetViews }: IMirageWherehowsDBs,
|
|
request: IMirageRequest<{}, { platform: DatasetPlatform; prefix?: string }>
|
|
): Array<string> {
|
|
const { platform = DatasetPlatform.HDFS, prefix = '' } = request.params || {};
|
|
const separator = PlatformsWithSlash[platform] ? '/' : '.';
|
|
const datasets = datasetViews
|
|
.where({ platform })
|
|
.models.filter(dataset => (prefix ? dataset.name.indexOf(prefix) === 0 : true))
|
|
.map(model => {
|
|
const nameWithoutPrefix = model.name.replace(prefix || '', '');
|
|
const tokens = nameWithoutPrefix.split(separator).filter((token: string) => !!token);
|
|
const lastSeparator = tokens.length === 1 ? '' : separator; // is the last part of the path (datasetname)
|
|
return `${prefix || separator}${tokens[0]}${lastSeparator}`;
|
|
});
|
|
|
|
return uniq(datasets);
|
|
};
|