(ns auto-ap.jobs.core
  (:require [auto-ap.utils :refer [heartbeat]]
            [mount.core :as mount]
            [auto-ap.datomic :refer [conn]]
            [clojure.tools.logging :as log]
            [nrepl.server :refer [start-server]]
            [auto-ap.background.metrics :refer [metrics-setup container-tags container-data logging-context]]
            [unilog.context :as lc]
            [com.brunobonacci.mulog :as mu]))

(defn execute [name f]
  (try 
    (lc/with-context {:background-job name}
      (mu/with-context {:background-job name
                        :service name}
        (mount/start (mount/only #{#'conn #'metrics-setup #'container-tags #'logging-context #'container-data }))
        (start-server :port 9000 :bind "0.0.0.0" #_#_:handler (cider-nrepl-handler))
        ((heartbeat f name))
        (log/info "Stopping " name)
        (Thread/sleep 15000)
        (mount/stop)))
    (finally
      (System/exit 0))))
