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