41 lines
1.5 KiB
TypeScript
Raw Normal View History

import Component from '@ember/component';
2019-08-31 20:51:14 -07:00
import { set } from '@ember/object';
import { task } from 'ember-concurrency';
import { readDownstreamDatasetsByUrn } from 'wherehows-web/utils/api/datasets/lineage';
import { LineageList } from 'wherehows-web/typings/api/datasets/relationships';
2019-08-31 20:51:14 -07:00
import { containerDataSource } from '@datahub/utils/api/data-source';
import { ETaskPromise } from '@datahub/utils/types/concurrency';
2019-08-31 20:51:14 -07:00
@containerDataSource('getDatasetDownstreamsTask', ['urn'])
export default class DatasetLineageDownstreamsContainer extends Component {
/**
* Urn string for the related dataset, supplied as an external attribute
* @type {string}
* @memberof DatasetLineageDownstreamsContainer
*/
urn!: string;
/**
* List of downstreams datasets for this urn
* @type {LineageList}
* @memberof DatasetLineageDownstreamsContainer
*/
downstreams: LineageList = [];
/**
* Task to request and set dataset downstreams for this urn
2018-07-20 02:55:10 -07:00
* @type {TaskProperty<Promise<Relationships>> & {perform: (a?: {} | undefined) => TaskInstance<Promise<Relationships>>}}
* @memberof DatasetLineageDownstreamsContainer
*/
2019-08-31 20:51:14 -07:00
@task(function*(this: DatasetLineageDownstreamsContainer): IterableIterator<Promise<LineageList>> {
let downstreams: LineageList = [];
try {
2019-08-31 20:51:14 -07:00
downstreams = yield readDownstreamDatasetsByUrn(this.urn);
} finally {
set(this, 'downstreams', downstreams);
}
2019-08-31 20:51:14 -07:00
})
getDatasetDownstreamsTask!: ETaskPromise<LineageList>;
}