in app/conf/DynamoConfiguration.scala [68:93]
def fromTable(
dynamoDb: DynamoDB,
tableName: String,
configSegments: Seq[ConfigSegment]
): Seq[(ConfigSegment, Option[Configuration])] = {
val primaryKeys = configSegments.map { segment =>
new PrimaryKey("App", segment.app, "Stage", segment.stage)
}
val tableKeysAndAttributes =
new TableKeysAndAttributes(tableName).withPrimaryKeys(primaryKeys: _*)
val result = dynamoDb.batchGetItem(tableKeysAndAttributes)
val items =
result.getTableItems.asScala.get(tableName).toSeq.flatMap(_.asScala)
val configs = items.map { item =>
val app = item.getString("App")
val stage = item.getString("Stage")
ConfigSegment(app, stage) -> fromItem(
item,
s"Dynamo DB table $tableName [App=$app, Stage=$stage]"
)
}.toMap
configSegments.map { segment => segment -> configs.get(segment) }
}