def deleteUser()

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
  }