package io.hydrosphere.mist.worker

import io.hydrosphere.mist.core.CommonData.RunJobRequest
import io.hydrosphere.mist.worker.logging.{LogsWriter, RemoteAppender, RemoteLogsWriter}
import org.apache.log4j.{LogManager, Logger}

object RequestSetup {

  type ReqSetup = RunJobRequest => RunJobRequest => Unit

  val NOOP: ReqSetup = (_ : RunJobRequest) => (_: RunJobRequest) => ()

  def loggingSetup(logger: Logger, writer: LogsWriter): ReqSetup = {
    (req: RunJobRequest) => {
      val app = RemoteAppender.create(req.id, writer)
      logger.addAppender(app)
      (req: RunJobRequest) => logger.removeAppender(req.id)
    }
  }

  def loggingSetup(writer: LogsWriter): ReqSetup = loggingSetup(LogManager.getRootLogger, writer)
}