(ns dda.backup.monitoring.domain
  (:require
   [orchestra.core :refer [defn-spec]]
   [clojure.spec.alpha :as s]
   [clojure.string :as st]))

(s/def ::url string?)
(s/def ::name string?)
(s/def ::namespace string?)
(s/def ::metrics map?)

(s/def ::config (s/keys :req-un [::url ::name ::metrics ::namespace]))

(defn-spec collect-metrics string?
  [config ::config]
  (let [{:keys [metrics namespace]} config]
    (str
     (->> metrics
          (map (fn [entry] (str (name (key entry))
                                "{namespace=" namespace "}" " "
                                (val entry))))
          (st/join "\n"))
     "\n")))