2019-08-31 20:51:14 -07:00
|
|
|
import { getJSON, returnDefaultIfNotFound } from '@datahub/utils/api/fetcher';
|
2018-05-17 23:46:03 -07:00
|
|
|
import { datasetUrlByUrn } from 'wherehows-web/utils/api/datasets/shared';
|
2018-09-13 20:26:48 -07:00
|
|
|
import { LineageList } from 'wherehows-web/typings/api/datasets/relationships';
|
2019-08-31 20:51:14 -07:00
|
|
|
import { encodeUrn } from '@datahub/utils/validators/urn';
|
|
|
|
|
|
|
|
// TODO: [META-8686] These lineage API items are still in place here as there is some difference
|
|
|
|
// in the typings and the actual handling that make the two currently incompatible with a simple
|
|
|
|
// reference change. Refer to @datahub/data-models/api/dataset/lineage for the maintained version
|
|
|
|
// that these should be migrated to
|
2018-05-17 23:46:03 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Constructs the url for a datasets upstreams
|
|
|
|
* @param {string} urn the urn for the child dataset
|
|
|
|
* @return {string}
|
|
|
|
*/
|
|
|
|
const datasetUpstreamUrlByUrn = (urn: string): string => `${datasetUrlByUrn(urn)}/upstreams`;
|
|
|
|
|
2018-07-19 16:18:06 -07:00
|
|
|
/**
|
|
|
|
* Constructs the url for a datasets downstreams
|
|
|
|
* @param {string} urn
|
|
|
|
* @return {string}
|
|
|
|
*/
|
|
|
|
const datasetDownstreamUrlByUrn = (urn: string): string => `${datasetUrlByUrn(urn)}/downstreams`;
|
|
|
|
|
2018-05-17 23:46:03 -07:00
|
|
|
/**
|
|
|
|
* Fetches the list of upstream datasets for a dataset by urn
|
|
|
|
* @param {string} urn urn for the child dataset
|
|
|
|
* @return {Promise<Array<IDatasetView>>}
|
|
|
|
*/
|
2018-09-13 20:26:48 -07:00
|
|
|
const readUpstreamDatasetsByUrn = (urn: string): Promise<LineageList> =>
|
|
|
|
returnDefaultIfNotFound(getJSON<LineageList>({ url: datasetUpstreamUrlByUrn(encodeUrn(urn)) }), []);
|
2018-05-17 23:46:03 -07:00
|
|
|
|
2018-07-19 16:18:06 -07:00
|
|
|
/**
|
|
|
|
* Requests the downstream datasets for the dataset identified by urn
|
|
|
|
* @param {string} urn string urn for the dataset
|
|
|
|
* @return {Promise<Array<IDatasetView>>}
|
|
|
|
*/
|
2018-09-13 20:26:48 -07:00
|
|
|
const readDownstreamDatasetsByUrn = (urn: string): Promise<LineageList> =>
|
|
|
|
returnDefaultIfNotFound(getJSON<LineageList>({ url: datasetDownstreamUrlByUrn(encodeUrn(urn)) }), []);
|
2018-07-19 16:18:06 -07:00
|
|
|
|
|
|
|
export { readUpstreamDatasetsByUrn, readDownstreamDatasetsByUrn };
|