in media_remover/src/main/scala/helpers/PendingDeletionHelper.scala [80:109]
def storeDeletionPending(msg: OnlineOutputMessage): Future[Either[String, Int]] =
msg.originalFilePath match {
case Some(filePath) =>
Try {
MediaTiers.withName(msg.mediaTier)
} match {
case Success(mediaTier) =>
val recordMaybeFut = mediaTier match {
case MediaTiers.ONLINE =>
pendingDeletionRecordDAO.findByOnlineIdForONLINE(Ensurer.validateMediaId(msg.vidispineItemId))
case MediaTiers.NEARLINE =>
pendingDeletionRecordDAO.findByNearlineIdForNEARLINE(Ensurer.validateMediaId(msg.nearlineId))
}
recordMaybeFut.map({
case Some(existingRecord) => existingRecord.copy(attempt = existingRecord.attempt + 1)
case None =>
PendingDeletionRecord(None, originalFilePath = filePath, nearlineId = msg.nearlineId, vidispineItemId = msg.vidispineItemId, mediaTier = mediaTier, attempt = 1)
}).flatMap(rec => {
pendingDeletionRecordDAO
.writeRecord(rec)
.map(recId => Right(recId))
})
case Failure(ex) =>
logger.warn(s"Unexpected value for MediaTier: ${ex.getMessage}")
Future.failed(new RuntimeException(s"Cannot store PendingDeletion, unexpected value for mediaTier: '${msg.mediaTier}"))
}
case None =>
logger.warn(s"No filepath for ${msg.asJson}, no use storing a PendingDeletion; dropping message")
Future.failed(new RuntimeException("Cannot store PendingDeletion record for item without filepath"))
}