Skip to content

Instantly share code, notes, and snippets.

@eraserhd
Created April 8, 2019 17:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eraserhd/b7276d42de798e04b3f1cda0fb8e76ab to your computer and use it in GitHub Desktop.
Save eraserhd/b7276d42de798e04b3f1cda0fb8e76ab to your computer and use it in GitHub Desktop.
(defn- log-insertion-counts
[rf]
(fn
([] (rf))
([session] (rf session))
([session batch]
(let [before-session session
after-session (rf session batch)]
(send-off logging-agent
(fn [_]
(let [before (into {} (map (fn [[k v]] [(:name k) (count v)])) (:insertions (inspect before-session)))
after (into {} (map (fn [[k v]] [(:name k) (count v)])) (:insertions (inspect after-session)))
delta (reduce-kv (fn [m k v]
(assoc m k (- (get after k 0) (get before k 0))))
{}
after)]
(log/info "session-from-db: insertion counts:"
(with-out-str
(clojure.pprint/print-table
(->> delta
(map (fn [[k v]]
(let [k (-> k str read-string name)]
{:rule k, :count v})))
(remove (comp zero? :count))
(sort-by (juxt :count :rule))
reverse)))))))
after-session))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment