in app/services/DynamoChannelTests.scala [26:57]
private def buildKey(channel: Channel, testName: String): java.util.Map[String, AttributeValue] =
Map(
"channel" -> AttributeValue.builder.s(channel.toString).build,
"name" -> AttributeValue.builder.s(testName).build
).asJava
/**
* Attempts to retrieve a test from dynamodb. Fails if the test does not exist.
*/
private def get(testName: String, channel: Channel): ZIO[ZEnv, DynamoGetError, java.util.Map[String, AttributeValue]] =
effectBlocking {
val query = QueryRequest
.builder
.tableName(tableName)
.keyConditionExpression("channel = :channel AND #name = :name")
.expressionAttributeValues(
Map(
":channel" -> AttributeValue.builder.s(channel.toString).build,
":name" -> AttributeValue.builder.s(testName).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"Test does not exist: $channel/$testName")))
}.mapError(error =>