private def buildKey()

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")))
      }