in api/src/main/scala/com/gu/adapters/queue/SqsDeletionConsumer.scala [47:64]
def deleteUser(m: Message, avatarStore: AvatarStore): Future[MessageAction] = Pekko.executeBlocking {
val eventUserId = DeletionEvent.userId(m.body()).toRight(InvalidUserId("Unable to get userId from sqs message", List(m.body)))
val result: Either[Error, MessageAction] = for {
userId <- eventUserId
user <- User.userFromId(userId)
deleted <- avatarStore.deleteAll(user)
} yield {
logger.info(s"Successfully deleted $deleted")
Delete(m)
}
result.left.map { e =>
logger.error(s"Failed to process delete event $m", e)
// If the avatar can't be deleted, don’t change that message, and let it reappear in the queue after the visibility timeout
Ignore(m)
}.merge
}