// prepareDynamoDBTable prepares DynamoDB table and it returns table name. func prepareDynamoDBTable(dynamodbClient *dynamodb.DynamoDB) string { dummyTableName := randSeq(10) input := newTestCreateTableInput(dummyTableName) dynamodbClient.CreateTable(input) dynamodbClient.WaitUntilTableExists(&dynamodb.DescribeTableInput{ TableName: aws.String(dummyTableName), }) return dummyTableName }
func createTable(db *dynamodb.DynamoDB, createParams *dynamodb.CreateTableInput) error { _, err := db.CreateTable(createParams) if err != nil { return err } describeParams := &dynamodb.DescribeTableInput{ TableName: aws.String(*createParams.TableName), } if err := db.WaitUntilTableExists(describeParams); err != nil { return err } return nil }
// ensureTableExists creates a DynamoDB table with a given // DynamoDB client. If the table already exists, it is not // being reconfigured. func ensureTableExists(client *dynamodb.DynamoDB, table string, readCapacity, writeCapacity int) error { _, err := client.DescribeTable(&dynamodb.DescribeTableInput{ TableName: aws.String(table), }) if awserr, ok := err.(awserr.Error); ok { if awserr.Code() == "ResourceNotFoundException" { _, err = client.CreateTable(&dynamodb.CreateTableInput{ TableName: aws.String(table), ProvisionedThroughput: &dynamodb.ProvisionedThroughput{ ReadCapacityUnits: aws.Int64(int64(readCapacity)), WriteCapacityUnits: aws.Int64(int64(writeCapacity)), }, KeySchema: []*dynamodb.KeySchemaElement{{ AttributeName: aws.String("Path"), KeyType: aws.String("HASH"), }, { AttributeName: aws.String("Key"), KeyType: aws.String("RANGE"), }}, AttributeDefinitions: []*dynamodb.AttributeDefinition{{ AttributeName: aws.String("Path"), AttributeType: aws.String("S"), }, { AttributeName: aws.String("Key"), AttributeType: aws.String("S"), }}, }) if err != nil { return err } err = client.WaitUntilTableExists(&dynamodb.DescribeTableInput{ TableName: aws.String(table), }) if err != nil { return err } } } if err != nil { return err } return nil }