UNPKG

@mcma/aws-dynamodb

Version:

Node module with code for using DynamoDB as the backing data storage for MCMA API handlers and workers.

44 lines (43 loc) 1.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getTableDescription = getTableDescription; const client_dynamodb_1 = require("@aws-sdk/client-dynamodb"); const tableDescriptions = {}; function getKeyNames(keySchema) { let partitionKeyName; let sortKeyName; for (const key of keySchema) { switch (key.KeyType) { case "HASH": partitionKeyName = key.AttributeName; break; case "RANGE": sortKeyName = key.AttributeName; break; } } return { partition: partitionKeyName, sort: sortKeyName }; } async function getTableDescription(dynamoDBClient, tableName) { if (tableDescriptions[tableName]) { return tableDescriptions[tableName]; } const data = await dynamoDBClient.send(new client_dynamodb_1.DescribeTableCommand({ TableName: tableName })); const globalSecondaryIndexes = (data.Table.GlobalSecondaryIndexes ?? []).map(i => ({ name: i.IndexName, keyNames: getKeyNames(i.KeySchema) })); const localSecondaryIndexes = (data.Table.LocalSecondaryIndexes ?? []).map(i => ({ name: i.IndexName, sortKeyName: getKeyNames(i.KeySchema).sort })); return { tableName, keyNames: getKeyNames(data.Table.KeySchema), localSecondaryIndexes, globalSecondaryIndexes }; }