public static async createNew()

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}`);
    }
  }