func CreateAdminTable() { var svc *dynamodb.DynamoDB = dbutil.CreateDynamoDBClient() params := &dynamodb.CreateTableInput{ AttributeDefinitions: []*dynamodb.AttributeDefinition{ { AttributeName: aws.String("AdminID"), AttributeType: aws.String("S"), }, }, KeySchema: []*dynamodb.KeySchemaElement{ { AttributeName: aws.String("AdminID"), KeyType: aws.String("HASH"), }, }, ProvisionedThroughput: &dynamodb.ProvisionedThroughput{ ReadCapacityUnits: aws.Int64(1), WriteCapacityUnits: aws.Int64(1), }, TableName: aws.String(AdminTableName), } resp, err := svc.CreateTable(params) if err != nil { log.Fatal(err) } log.Info(resp) }
func CreateThreadTable(svc *dynamodb.DynamoDB) (*dynamodb.CreateTableOutput, error) { params := &dynamodb.CreateTableInput{ TableName: aws.String("Thread"), AttributeDefinitions: []*dynamodb.AttributeDefinition{ { AttributeName: aws.String("ForumName"), AttributeType: aws.String("S"), }, { AttributeName: aws.String("Subject"), AttributeType: aws.String("S"), }, }, KeySchema: []*dynamodb.KeySchemaElement{ { AttributeName: aws.String("ForumName"), KeyType: aws.String("HASH"), }, { AttributeName: aws.String("Subject"), KeyType: aws.String("RANGE"), }, }, ProvisionedThroughput: &dynamodb.ProvisionedThroughput{ ReadCapacityUnits: aws.Int64(10), WriteCapacityUnits: aws.Int64(5), }, } return svc.CreateTable(params) }
func CreateAppTable() { var svc *dynamodb.DynamoDB = dbutil.CreateDynamoDBClient() params := &dynamodb.CreateTableInput{ AttributeDefinitions: []*dynamodb.AttributeDefinition{ { AttributeName: aws.String("ClientID"), AttributeType: aws.String("S"), }, { AttributeName: aws.String("DeveloperEmail"), AttributeType: aws.String("S"), }, }, KeySchema: []*dynamodb.KeySchemaElement{ { AttributeName: aws.String("ClientID"), KeyType: aws.String("HASH"), }, }, ProvisionedThroughput: &dynamodb.ProvisionedThroughput{ ReadCapacityUnits: aws.Int64(1), WriteCapacityUnits: aws.Int64(1), }, TableName: aws.String(ApplicationTableName), GlobalSecondaryIndexes: []*dynamodb.GlobalSecondaryIndex{ { // Required IndexName: aws.String("EMail-Index"), KeySchema: []*dynamodb.KeySchemaElement{ { // Required AttributeName: aws.String("DeveloperEmail"), KeyType: aws.String("HASH"), }, // More values... }, Projection: &dynamodb.Projection{ ProjectionType: aws.String("ALL"), }, ProvisionedThroughput: &dynamodb.ProvisionedThroughput{ ReadCapacityUnits: aws.Int64(1), WriteCapacityUnits: aws.Int64(1), }, }, }, } resp, err := svc.CreateTable(params) if err != nil { log.Fatal(err) } log.Info(resp) }
// 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 createUserTable(db *dynamodb.DynamoDB) error { params := &dynamodb.CreateTableInput{ TableName: aws.String("user"), KeySchema: []*dynamodb.KeySchemaElement{ { AttributeName: aws.String("id"), KeyType: aws.String("HASH"), }, }, AttributeDefinitions: []*dynamodb.AttributeDefinition{ { AttributeName: aws.String("id"), AttributeType: aws.String("S"), }, { AttributeName: aws.String("oauthid"), AttributeType: aws.String("S"), }, }, ProvisionedThroughput: &dynamodb.ProvisionedThroughput{ ReadCapacityUnits: aws.Int64(1), WriteCapacityUnits: aws.Int64(1), }, GlobalSecondaryIndexes: []*dynamodb.GlobalSecondaryIndex{ { // Required IndexName: aws.String("AuthIDIndex"), KeySchema: []*dynamodb.KeySchemaElement{ { // Required AttributeName: aws.String("oauthid"), KeyType: aws.String("HASH"), }, }, Projection: &dynamodb.Projection{ ProjectionType: aws.String("INCLUDE"), NonKeyAttributes: []*string{ aws.String("id"), }, }, ProvisionedThroughput: &dynamodb.ProvisionedThroughput{ ReadCapacityUnits: aws.Int64(1), WriteCapacityUnits: aws.Int64(1), }, }, }, } _, err := db.CreateTable(params) if err != nil { return err } return nil }
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 }
// make sure session table exists func tryCreateTable(db *dynamodb.DynamoDB, sessionTableName string, readCapacityUnits, writeCapacityUnits int64) error { describeTableInput := &dynamodb.DescribeTableInput{TableName: aws.String(sessionTableName)} if _, err := db.DescribeTable(describeTableInput); err != nil { awserr := err.(awserr.Error) if awserr.Code() == "ResourceNotFoundException" { // table does not exist - create now params := &dynamodb.CreateTableInput{ TableName: aws.String(sessionTableName), AttributeDefinitions: []*dynamodb.AttributeDefinition{ // Required { // Required AttributeName: aws.String("id"), AttributeType: aws.String("S"), // Required }, }, KeySchema: []*dynamodb.KeySchemaElement{ // Required { // Required AttributeName: aws.String("id"), KeyType: aws.String("HASH"), // Required }, }, ProvisionedThroughput: &dynamodb.ProvisionedThroughput{ ReadCapacityUnits: aws.Int64(readCapacityUnits), WriteCapacityUnits: aws.Int64(writeCapacityUnits), }, } if _, err := db.CreateTable(params); err != nil { return err } } else { return err } } return nil }
func CreateProductTable(svc *dynamodb.DynamoDB) (*dynamodb.CreateTableOutput, error) { params := &dynamodb.CreateTableInput{ TableName: aws.String("ProductCatalog"), AttributeDefinitions: []*dynamodb.AttributeDefinition{ { AttributeName: aws.String("Id"), AttributeType: aws.String("N"), }, }, KeySchema: []*dynamodb.KeySchemaElement{ { AttributeName: aws.String("Id"), KeyType: aws.String("HASH"), }, }, ProvisionedThroughput: &dynamodb.ProvisionedThroughput{ ReadCapacityUnits: aws.Int64(10), WriteCapacityUnits: aws.Int64(5), }, } return svc.CreateTable(params) }
func CreateTable(db *dynamodb.DynamoDB) error { var _, err = db.CreateTable(getAccountTableSchema()) return err }
func createEdgeTable(t *testing.T, db *dynamodb.DynamoDB) { _, err := db.CreateTable(&dynamodb.CreateTableInput{ TableName: EDGE_TABLE_NAME, AttributeDefinitions: []*dynamodb.AttributeDefinition{ &dynamodb.AttributeDefinition{ AttributeName: EDGE_HASH, AttributeType: aws.String("S"), }, &dynamodb.AttributeDefinition{ AttributeName: EDGE_RANGE, AttributeType: aws.String("S"), }, &dynamodb.AttributeDefinition{ AttributeName: EDGE_ATTR_NAME, AttributeType: aws.String("S"), }, }, KeySchema: []*dynamodb.KeySchemaElement{ &dynamodb.KeySchemaElement{ AttributeName: EDGE_HASH, KeyType: aws.String("HASH"), }, &dynamodb.KeySchemaElement{ AttributeName: EDGE_RANGE, KeyType: aws.String("RANGE"), }, }, LocalSecondaryIndexes: []*dynamodb.LocalSecondaryIndex{ &dynamodb.LocalSecondaryIndex{ IndexName: EDGE_LSI_NAME, KeySchema: []*dynamodb.KeySchemaElement{ &dynamodb.KeySchemaElement{ AttributeName: EDGE_HASH, KeyType: aws.String("HASH"), }, &dynamodb.KeySchemaElement{ AttributeName: EDGE_ATTR_NAME, KeyType: aws.String("RANGE"), }, }, Projection: &dynamodb.Projection{ ProjectionType: aws.String(dynamodb.ProjectionTypeInclude), NonKeyAttributes: []*string{ EDGE_HASH, EDGE_RANGE, EDGE_ATTR_NAME, }, }, }, }, GlobalSecondaryIndexes: []*dynamodb.GlobalSecondaryIndex{ &dynamodb.GlobalSecondaryIndex{ IndexName: EDGE_GSI_REVERSE, KeySchema: []*dynamodb.KeySchemaElement{ &dynamodb.KeySchemaElement{ AttributeName: EDGE_RANGE, KeyType: aws.String("HASH"), }, &dynamodb.KeySchemaElement{ AttributeName: EDGE_HASH, KeyType: aws.String("RANGE"), }, }, Projection: &dynamodb.Projection{ ProjectionType: aws.String(dynamodb.ProjectionTypeAll), }, ProvisionedThroughput: &dynamodb.ProvisionedThroughput{ ReadCapacityUnits: aws.Int64(10), WriteCapacityUnits: aws.Int64(10), }, }, }, ProvisionedThroughput: &dynamodb.ProvisionedThroughput{ ReadCapacityUnits: aws.Int64(10), WriteCapacityUnits: aws.Int64(10), }, }) if err != nil { t.Fatalf("create edge table: %s", err.Error()) } }