I am testing DynamoDB tables and want to set up different table names for prod and dev environment using the prefix "dev_" for development.
I made this test to print the table name:
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperConfig.TableNameOverride;
TableNameOverride tbl = new TableNameOverride("test").withTableNamePrefix("dev_");
System.out.println("name=" + tbl.getTableName() + " prefix=" + tbl.getTableNamePrefix());
This prints: name=null prefix=dev_
How come the name here is null ?
TableNameOverride tbl = new TableNameOverride("test");//.withTableNamePrefix("dev_");
System.out.println("name=" + tbl.getTableName() + " prefix=" + tbl.getTableNamePrefix());
This prints: name=test prefix=null
*How can I get the table name to be "dev_test" ?*
I want to use this later to get a "dev_" prefix for all tables in development mode like this:
DynamoDBTable annotation = (DynamoDBTable) myclass.getClass().getAnnotation(DynamoDBTable.class);
TableNameOverride tbl = new TableNameOverride(annotation.tableName()).withTableNamePrefix("dev_");
Or is there another solution to separate between dev and prod tables?
I first thought of putting them in separate regions but not sure about this.
Could also use this:
mapper.save(ck, new DynamoDBMapperConfig(new TableNameOverride((isDev ? "dev_" : "") + annotation.tableName())));