in app/services/DynamoBannerDesigns.scala [24:59]
private def buildKey(
designName: String): java.util.Map[String, AttributeValue] =
Map(
"name" -> AttributeValue.builder.s(designName).build
).asJava
/**
* Attempts to retrieve a banner design from dynamodb. Fails if the banner design does not exist.
*/
private def get(designName: String)
: ZIO[ZEnv, DynamoGetError, java.util.Map[String, AttributeValue]] =
effectBlocking {
val query = QueryRequest.builder
.tableName(tableName)
.keyConditionExpression("#name = :name")
.expressionAttributeValues(
Map(
":name" -> AttributeValue.builder.s(designName).build
).asJava
)
.expressionAttributeNames(Map("#name" -> "name").asJava) // name is a reserved word in dynamodb
.build()
client
.query(query)
.items
.asScala
.headOption
}.flatMap {
case Some(item) => ZIO.succeed(item)
case None =>
ZIO.fail(
DynamoGetError(
new Exception(s"Banner design does not exist: $designName")))
}