def writeStreamToFile()

in app/models/FileEntryDAO.scala [180:226]


  def writeStreamToFile(entry: FileEntry, inputStream: InputStream): Future[Unit] = {
    logger.debug(s"writeStreamToFile called for entry: ${entry.id}")

    storage(entry).flatMap {
      case Some(storage) =>
        storage.getStorageDriver match {
          case Some(storageDriver) =>
            val outputPath = Paths.get(entry.filepath)
            logger.info(s"Preparing to write to $outputPath with storage driver $storageDriver")

            Future {
              try {
                logger.debug("Initiating file write process using storageDriver...")

                // Using storageDriver to write data from inputStream to the path
                val result = storageDriver.writeDataToPath(outputPath.toString, entry.version, inputStream)
                inputStream.close() // Close the stream after writing
                logger.debug("File write process completed. Updating file content status...")

                updateFileHasContent(entry)
                logger.info(s"File successfully written to $outputPath and content status updated.")
                result
              } catch {
                case e: Exception =>
                  logger.error(s"Error occurred during file writing to $outputPath", e)
                  try {
                    inputStream.close()
                  } catch {
                    case closeError: Exception =>
                      logger.error("Error occurred while closing input stream", closeError)
                  }
                  throw e
              }
            }

          case None =>
            val errorMsg = s"No storage driver available for storage ${entry.storageId}"
            logger.error(errorMsg)
            Future.failed(new RuntimeException(errorMsg))
        }

      case None =>
        val errorMsg = s"No storage could be found for ID ${entry.storageId}"
        logger.error(errorMsg)
        Future.failed(new RuntimeException(errorMsg))
    }
  }