def delete()

in api/src/main/scala/com/gu/adapters/store/Store.scala [151:180]


  def delete(table: String, ids: List[String]): Either[Error, DeleteResponse] = {
    def check(r: BatchWriteItemResult): Either[Error, BatchWriteItemResult] = {
      val errors: List[String] = r
        .getUnprocessedItems
        .asScala
        .get(table)
        .toSeq
        .flatMap(_.iterator().asScala)
        .map(_.getDeleteRequest.getKey.get("AvatarId").getS)
        .toList

      if (errors.nonEmpty) {
        Left(deletionFailed(errors))
      } else {
        Right(r)
      }
    }
    def delete() = {
      val deleteRequest = new TableWriteItems(table).addHashOnlyPrimaryKeysToDelete("AvatarId", ids: _*)
      for {
        response <- handleIoErrors(db.batchWriteItem(deleteRequest)).map(_.getBatchWriteItemResult)
        _ <- check(response)
      } yield DeleteResponse(ids)
    }

    ids match {
      case Nil => Right(DeleteResponse(ids))
      case _ => delete()
    }
  }