mirror of
https://github.com/datahub-project/datahub.git
synced 2025-12-24 08:28:12 +00:00
42 lines
1.7 KiB
TypeScript
42 lines
1.7 KiB
TypeScript
import { IComplianceInfo } from 'wherehows-web/typings/api/datasets/compliance';
|
|
import { IDatasetRetention } from 'wherehows-web/typings/api/datasets/retention';
|
|
import { nullify, Nullify, Omit, pick } from 'wherehows-web/utils/object';
|
|
import { isExempt } from 'wherehows-web/constants';
|
|
|
|
/**
|
|
* 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 => {
|
|
let { datasetUrn, compliancePurgeNote, complianceType } = pick(complianceInfo, [
|
|
'complianceType',
|
|
'compliancePurgeNote',
|
|
'datasetUrn'
|
|
]);
|
|
|
|
return {
|
|
purgeNote: complianceType && isExempt(complianceType) ? compliancePurgeNote : '',
|
|
purgeType: complianceType,
|
|
datasetUrn: datasetUrn!
|
|
};
|
|
};
|
|
|
|
/**
|
|
* Makes values in IComplianceInfo that are present / have a corollary in IDatasetRetention type null i.e. keys
|
|
* 'complianceType' | 'compliancePurgeNote'
|
|
* and retains other properties
|
|
* @param {IComplianceInfo} complianceInfo
|
|
* @returns {(Omit<IComplianceInfo, 'complianceType' | 'compliancePurgeNote'> &
|
|
* Nullify<Pick<IComplianceInfo, 'complianceType' | 'compliancePurgeNote'>>)}
|
|
*/
|
|
const nullifyRetentionFieldsOnComplianceInfo = (
|
|
complianceInfo: IComplianceInfo
|
|
): Omit<IComplianceInfo, 'complianceType' | 'compliancePurgeNote'> &
|
|
Nullify<Pick<IComplianceInfo, 'complianceType' | 'compliancePurgeNote'>> => ({
|
|
...complianceInfo,
|
|
...nullify(pick(complianceInfo, ['complianceType', 'compliancePurgeNote']))
|
|
});
|
|
|
|
export { extractRetentionFromComplianceInfo, nullifyRetentionFieldsOnComplianceInfo };
|