@csermet/multiprovider
Version:
cloud-graph provider plugin for AWS used to fetch AWS cloud data.
71 lines (70 loc) • 2.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
// import { formatTagsFromMap } from '../../utils/format' // TODO: Build this
const sdk_1 = require("@cloudgraph/sdk");
const generateArns_1 = require("../../utils/generateArns");
/**
* AthenaDataCatalog
*/
exports.default = ({ account, service: rawData, region, }) => {
const { CatalogName: catalogName, Type: type, databases = [] } = rawData;
const arn = generateArns_1.athenaDataCatalogArn({ region, account, name: catalogName });
const formatColumns = (column) => {
return {
id: sdk_1.generateUniqueId({
arn,
...column,
}),
name: column.Name,
type: column.Type,
comment: column.Comment,
};
};
const formatMetadata = (metadata) => {
return {
name: metadata.Name,
createTime: metadata.CreateTime?.toISOString(),
lastAccessTime: metadata.LastAccessTime?.toISOString(),
tableType: metadata.TableType,
columns: metadata.Columns?.map(formatColumns),
partitionKeys: metadata.PartitionKeys?.map(formatColumns),
parameters: Object.keys(metadata.Parameters ?? {}).map(key => ({
id: sdk_1.generateUniqueId({
arn,
...metadata,
}),
key,
value: metadata.Parameters[key],
})),
};
};
const formattedDatabases = databases.map(val => ({
id: sdk_1.generateUniqueId({
arn,
catalogName,
...val,
}),
name: val.Name,
description: val.Description,
parameters: Object.keys(val.Parameters ?? {}).map(key => ({
id: sdk_1.generateUniqueId({
arn,
catalogName,
key,
value: val.Parameters[key],
}),
key,
value: val.Parameters[key],
})),
metadata: formatMetadata(val.metadata),
}));
return {
id: arn,
arn,
region,
accountId: account,
catalogName,
type,
databases: formattedDatabases,
};
};