adds application of post-fn to view deltas
This commit is contained in:
parent
153b44ecc5
commit
f968a13ca0
|
@ -9,6 +9,8 @@
|
||||||
[clojure.core.async :refer [put! <! go thread]]
|
[clojure.core.async :refer [put! <! go thread]]
|
||||||
[clojure.java.jdbc :as j]))
|
[clojure.java.jdbc :as j]))
|
||||||
|
|
||||||
|
(declare post-process-deltas)
|
||||||
|
|
||||||
(defn send-fn*
|
(defn send-fn*
|
||||||
[send-fn address subject msg]
|
[send-fn address subject msg]
|
||||||
(if send-fn
|
(if send-fn
|
||||||
|
@ -35,7 +37,7 @@
|
||||||
db (if db-fn (db-fn msg) (:db config))
|
db (if db-fn (db-fn msg) (:db config))
|
||||||
subscriber-key (subscriber-key-fn* subscriber-key-fn msg)
|
subscriber-key (subscriber-key-fn* subscriber-key-fn msg)
|
||||||
namespace (namespace-fn* namespace-fn msg)
|
namespace (namespace-fn* namespace-fn msg)
|
||||||
view-sigs (view-filter msg (view-sig-fn* view-sig-fn msg) templates {:unsafe? unsafe?}) ; this is where security comes in. Move?
|
view-sigs (view-filter msg (view-sig-fn* view-sig-fn msg) templates {:unsafe? unsafe?}) ; this is where security comes in.
|
||||||
pconfig {:templates templates :subscriber-key subscriber-key :namespace namespace}]
|
pconfig {:templates templates :subscriber-key subscriber-key :namespace namespace}]
|
||||||
(debug "Subscribing views: " view-sigs " for subscriber " subscriber-key ", in namespace " namespace)
|
(debug "Subscribing views: " view-sigs " for subscriber " subscriber-key ", in namespace " namespace)
|
||||||
(when (seq view-sigs)
|
(when (seq view-sigs)
|
||||||
|
@ -71,10 +73,19 @@
|
||||||
(map :view-data (vals (get-subscribed-views (:persistence config) namespace))))
|
(map :view-data (vals (get-subscribed-views (:persistence config) namespace))))
|
||||||
|
|
||||||
(broadcast-deltas [this deltas namespace]
|
(broadcast-deltas [this deltas namespace]
|
||||||
|
(let [{:keys [templates]} config]
|
||||||
(doseq [vs (keys deltas)]
|
(doseq [vs (keys deltas)]
|
||||||
(debug "Subscribers subscribed to " vs " are "
|
(debug "Subscribers subscribed to " vs " are "
|
||||||
(if namespace (subscribed-to vs namespace) (subscribed-to vs)))
|
(if namespace (subscribed-to vs namespace) (subscribed-to vs)))
|
||||||
(doseq [sk (if namespace (subscribed-to vs namespace) (subscribed-to vs))]
|
(doseq [sk (if namespace (subscribed-to vs namespace) (subscribed-to vs))]
|
||||||
(doseq [ds (get deltas vs)]
|
(doseq [ds (map #(post-process-deltas templates %) (get deltas vs))]
|
||||||
(debug "Sending delta " {vs (dissoc ds :view-sig)} " to addr " sk)
|
(debug "Sending delta " {vs (dissoc ds :view-sig)} " to addr " sk)
|
||||||
(send-fn* (:send-fn config) sk :views.deltas {vs (dissoc ds :view-sig)}))))))
|
(send-fn* (:send-fn config) sk :views.deltas {vs (dissoc ds :view-sig)})))))))
|
||||||
|
|
||||||
|
(defn post-process-deltas
|
||||||
|
[templates delta-map]
|
||||||
|
(let [vs (:view-sig delta-map)
|
||||||
|
dm (dissoc delta-map :view-sig)]
|
||||||
|
(if-let [post-fn (get-in templates [(first vs) :post-fn])]
|
||||||
|
(reduce #(assoc %1 %2 (map post-fn (get dm %2))) {} (keys dm))
|
||||||
|
dm)))
|
||||||
|
|
Loading…
Reference in a new issue