private def addOrUpdateArchiveRecord()

in online_archive/src/main/scala/VidispineMessageProcessor.scala [79:121]


  private def addOrUpdateArchiveRecord(archivedRecord: Option[ArchivedRecord], filePath: String, uploadedPath: String, fileSize: Long,
                               itemId: Option[String], essenceVersion: Option[Int]):Future[Either[String, MessageProcessorReturnValue]] = {
    val record = archivedRecord match {
      case Some(rec) =>
        MDC.put("correlationId", rec.correlationId)
        logger.debug(s"actual archivehunter ID for $filePath is ${rec.archiveHunterID}")
        rec.copy(
          originalFileSize = fileSize,
          uploadedPath = uploadedPath,
          vidispineItemId = itemId,
          vidispineVersionId = essenceVersion
        )
      case None =>
        val correlationId = UUID.randomUUID().toString
        val archiveHunterID = utils.ArchiveHunter.makeDocId(bucket = vidispineFunctions.mediaBucketName, uploadedPath)

        MDC.put("correlationId", correlationId)
        logger.debug(s"Provisional archivehunter ID for $uploadedPath is $archiveHunterID")

        ArchivedRecord(None,
          archiveHunterID,
          archiveHunterIDValidated=false,
          originalFilePath=filePath,
          originalFileSize=fileSize,
          uploadedBucket = vidispineFunctions.mediaBucketName,
          uploadedPath = uploadedPath,
          uploadedVersion = None,
          vidispineItemId = itemId,
          vidispineVersionId = essenceVersion,
          None,
          None,
          None,
          None,
          None,
          correlationId
        )
    }

    logger.info(s"Updating record for ${record.originalFilePath} with vidispine ID ${itemId}, vidispine version ${essenceVersion}. ${if(!record.archiveHunterIDValidated) "ArchiveHunter ID validation is required."}")
    archivedRecordDAO
      .writeRecord(record)
      .map(recId=>Right(record.copy(id=Some(recId)).asJson))
  }