diff --git a/wherehows-web/app/utils/api/datasets/compliance.ts b/wherehows-web/app/utils/api/datasets/compliance.ts index fbc1ffadc8..c73cdeb9c4 100644 --- a/wherehows-web/app/utils/api/datasets/compliance.ts +++ b/wherehows-web/app/utils/api/datasets/compliance.ts @@ -9,6 +9,8 @@ import { IComplianceSuggestionResponse } from 'wherehows-web/typings/api/datasets/compliance'; import { getJSON, postJSON } from 'wherehows-web/utils/api/fetcher'; +import { saveDatasetRetentionByUrn } from 'wherehows-web/utils/api/datasets/retention'; +import { extractRetentionFromComplianceInfo } from 'wherehows-web/utils/datasets/retention'; /** * Constructs the dataset compliance url @@ -87,8 +89,10 @@ const readDatasetComplianceByUrn = async (urn: string): Promise} */ -const saveDatasetComplianceByUrn = (urn: string, complianceInfo: IComplianceInfo): Promise => - postJSON({ url: datasetComplianceUrlByUrn(urn), data: complianceInfo }); +const saveDatasetComplianceByUrn = async (urn: string, complianceInfo: IComplianceInfo): Promise => { + await postJSON({ url: datasetComplianceUrlByUrn(urn), data: complianceInfo }); + await saveDatasetRetentionByUrn(urn, extractRetentionFromComplianceInfo(complianceInfo)); +}; /** * Requests the compliance suggestions for a given dataset Id and returns the suggestion list diff --git a/wherehows-web/app/utils/datasets/retention.ts b/wherehows-web/app/utils/datasets/retention.ts new file mode 100644 index 0000000000..64d3ec0d03 --- /dev/null +++ b/wherehows-web/app/utils/datasets/retention.ts @@ -0,0 +1,24 @@ +import { IComplianceInfo } from 'wherehows-web/typings/api/datasets/compliance'; +import { IDatasetRetention } from 'wherehows-web/typings/api/datasets/retention'; +import { fleece } from 'wherehows-web/utils/object'; + +/** + * Extracts values from an IComplianceInfo instance to create an instance of IDatasetRetention + * @param {IComplianceInfo} complianceInfo the compliance info object + * @returns {IDatasetRetention} + */ +const extractRetentionFromComplianceInfo = (complianceInfo: IComplianceInfo): IDatasetRetention => { + const { datasetUrn, compliancePurgeNote, complianceType } = fleece([ + 'complianceType', + 'compliancePurgeNote', + 'datasetUrn' + ])(complianceInfo); + + return { + purgeNote: compliancePurgeNote, + purgeType: complianceType, + datasetUrn: datasetUrn! + }; +}; + +export { extractRetentionFromComplianceInfo };