override def merge()

in storehaus-dynamodb/src/main/scala/com/twitter/storehaus/dynamodb/DynamoLongStore.scala [46:63]


  override def merge(kv: (String, Long)): Future[Option[Long]] = {
    val attributeUpdateValue = new AttributeValueUpdate(
      kv._2.as[AttributeValue],
      AttributeAction.ADD
    )

    val updateRequest = new UpdateItemRequest(
      underlying.tableName,
      Map(underlying.primaryKeyColumn -> kv._1.as[AttributeValue]).as[JMap[String, AttributeValue]],
      Map(underlying.valueColumn -> attributeUpdateValue).as[JMap[String, AttributeValueUpdate]]
    )

    underlying.apiRequestFuturePool {
      val res = underlying.client.updateItem(updateRequest)
      // Returns the result, we need the value before
      Option(res.getAttributes.get(kv._1)).map { av => av.as[Try[Long]].get - kv._2 }
    }
  }