in packages/aws-rfdk/lib/lambdas/nodejs/lib/dynamodb/composite-table.ts [95:142]
public static async createNew(args: {
client: DynamoDBClient,
name: string,
primaryKeyName: string,
sortKeyName: string,
region?: string,
tags?: Array<{ Key: string, Value: string }>
}): Promise<CompositeStringIndexTable> {
// See: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#createTable-property
const request: CreateTableCommandInput = {
TableName: args.name,
AttributeDefinitions: [
{
AttributeName: args.primaryKeyName,
AttributeType: 'S',
},
{
AttributeName: args.sortKeyName,
AttributeType: 'S',
},
],
KeySchema: [
{
AttributeName: args.primaryKeyName,
KeyType: 'HASH',
},
{
AttributeName: args.sortKeyName,
KeyType: 'RANGE',
},
],
BillingMode: 'PAY_PER_REQUEST',
Tags: args.tags,
};
try {
await args.client.send(new CreateTableCommand(request));
const table: CompositeStringIndexTable = new CompositeStringIndexTable(
args.client,
args.name,
args.primaryKeyName,
args.sortKeyName,
);
return table;
} catch (e) {
throw new Error(`CreateTable '${args.name}': ${(e as Error)?.name} -- ${(e as Error)?.message}`);
}
}