Remove db from persistence api.
This commit is contained in:
parent
4d2da3f5a8
commit
5e1781fade
|
@ -34,10 +34,10 @@
|
|||
(defn subscribe-and-compute
|
||||
"Subscribe a view and return the initial values."
|
||||
[db persistence templates vs namespace subscriber-key]
|
||||
(with-retry
|
||||
(j/with-db-transaction [t db :isolation :serializable]
|
||||
(let [view-data (persist/subscribe! persistence t templates namespace vs subscriber-key)]
|
||||
(initial-view t vs templates (:view view-data))))))
|
||||
(let [view-data (persist/subscribe! persistence templates namespace vs subscriber-key)]
|
||||
(with-retry
|
||||
(j/with-db-transaction [t db :isolation :serializable]
|
||||
(initial-view t vs templates (:view view-data))))))
|
||||
|
||||
;; Deltas look like:
|
||||
;; [{view-sig1 delta, view-sig2 delta, ...} {view-sig3 delta, ...}]
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
(ns views.persistence.core)
|
||||
|
||||
(defprotocol IPersistence
|
||||
(subscribe! [this db templates namespace view-sig subscriber-key]
|
||||
(subscribe! [this templates namespace view-sig subscriber-key]
|
||||
"Subscribes a subscriber with subscriber-key to a view with signature
|
||||
view-sig. Templates is a map of all defined view templates and db
|
||||
is a jdbc transcation handle for the database from which initial
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
(deftype ViewsMemoryPersistence [subbed-views]
|
||||
IPersistence
|
||||
(subscribe!
|
||||
[this db templates namespace view-sig subscriber-key]
|
||||
[this templates namespace view-sig subscriber-key]
|
||||
(let [sv (swap! subbed-views (fn [sv] (update-in sv [namespace] ns-subscribe! view-sig templates subscriber-key)))]
|
||||
(get-in sv [namespace view-sig :view-data])))
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@
|
|||
(subscribe-views base-subbed-views {:subscriber-key 1 :views [[:users] [:user-posts 1]]})
|
||||
(Thread/sleep 10)
|
||||
(is (= (subscriptions (:persistence config) bsv/default-ns [[:users] [:user-posts 1]])
|
||||
{[:users] #{1}}))
|
||||
{[:users] #{1}, [:user-posts 1] #{1}}))
|
||||
(disconnect base-subbed-views {:subscriber-key 1})
|
||||
(is (= (subscriptions (:persistence config) bsv/default-ns [[:users] [:user-posts 1]])
|
||||
{}))))
|
||||
|
@ -93,7 +93,7 @@
|
|||
(is (= sent-deltas %3))
|
||||
(swap! sent conj [%1 %2 %3]))
|
||||
base-subbed-views (BaseSubscribedViews. (assoc config :send-fn send-fn))]
|
||||
(subscribe! (:persistence config) vf/db vf/templates bsv/default-ns [:users] 1)
|
||||
(subscribe! (:persistence config) vf/templates bsv/default-ns [:users] 1)
|
||||
(broadcast-deltas base-subbed-views deltas nil)
|
||||
(is (= 1 (count @sent)))
|
||||
(is (= 1 (ffirst @sent)))
|
||||
|
@ -111,7 +111,7 @@
|
|||
1))
|
||||
(swap! sent conj [a b deltas-out]))
|
||||
base-subbed-views (BaseSubscribedViews. (assoc config :send-fn send-fn :templates templates))]
|
||||
(subscribe! (:persistence config) vf/db vf/templates bsv/default-ns [:users] 1)
|
||||
(subscribe! (:persistence config) vf/templates bsv/default-ns [:users] 1)
|
||||
(Thread/sleep 10)
|
||||
(broadcast-deltas base-subbed-views deltas nil)
|
||||
(is (= 1 (count @sent)))
|
||||
|
@ -131,7 +131,7 @@
|
|||
1))
|
||||
(swap! sent conj [a b deltas-out]))
|
||||
base-subbed-views (BaseSubscribedViews. (assoc config :send-fn send-fn :templates templates))]
|
||||
(subscribe! (:persistence config) vf/db vf/templates bsv/default-ns [:users] 1)
|
||||
(subscribe! (:persistence config) vf/templates bsv/default-ns [:users] 1)
|
||||
(Thread/sleep 10)
|
||||
(broadcast-deltas base-subbed-views deltas nil)
|
||||
(is (= 1 (count @sent)))
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
|
||||
(deftest vexec-sends-deltas
|
||||
(let [view-sig [:user-posts (:id @vf/user-fixture)]
|
||||
sub-to-it (persist/subscribe! @memory vf/db vf/templates default-ns view-sig (:id @vf/user-fixture))
|
||||
sub-to-it (persist/subscribe! @memory vf/templates default-ns view-sig (:id @vf/user-fixture))
|
||||
posted (first (vdb/vexec! test-config (vf/insert-post-tmpl (:id @vf/user-fixture) "title" "body")))
|
||||
delta-vs (ffirst (first @received-deltas))
|
||||
insert-delta (-> @received-deltas ffirst second first :insert-deltas first)]
|
||||
|
@ -46,7 +46,7 @@
|
|||
|
||||
(deftest with-view-transaction-sends-deltas
|
||||
(let [view-sig [:user-posts (:id @vf/user-fixture)]
|
||||
sub-to-it (persist/subscribe! @memory vf/db vf/templates default-ns view-sig (:id @vf/user-fixture))
|
||||
sub-to-it (persist/subscribe! @memory vf/templates default-ns view-sig (:id @vf/user-fixture))
|
||||
posted (first (vdb/with-view-transaction
|
||||
[tc test-config]
|
||||
(vdb/vexec! tc (vf/insert-post-tmpl (:id @vf/user-fixture) "title" "body"))))
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
(deftest memory-persistence
|
||||
(let [p (new-memory-persistence)
|
||||
vd (subscribe! p vf/db vf/templates :ns [:users] 1)]
|
||||
vd (subscribe! p vf/templates :ns [:users] 1)]
|
||||
;; This sort of test isn't great as it depends on the internal
|
||||
;; structure unrlated to memory persistence.
|
||||
(is (= vd
|
||||
|
@ -18,7 +18,7 @@
|
|||
{[:users] #{1}}))
|
||||
|
||||
;; Subsequent calls return same vd.
|
||||
(is (= (subscribe! p vf/db vf/templates :ns [:users] 3)
|
||||
(is (= (subscribe! p vf/templates :ns [:users] 3)
|
||||
vd))
|
||||
|
||||
;; And subscription is correct.
|
||||
|
@ -30,12 +30,12 @@
|
|||
{}))
|
||||
|
||||
;; Duplicate subscription is ignored.
|
||||
(subscribe! p vf/db vf/templates :ns [:users] 3)
|
||||
(subscribe! p vf/templates :ns [:users] 3)
|
||||
(is (= (subscriptions p :ns [[:users]])
|
||||
{[:users] #{1 3}}))
|
||||
|
||||
;; We can subscribe to multiple views.
|
||||
(subscribe! p vf/db vf/templates :ns [:user-posts 1] 5)
|
||||
(subscribe! p vf/templates :ns [:user-posts 1] 5)
|
||||
(is (= (subscriptions p :ns [[:users] [:user-posts 1]])
|
||||
{[:users] #{1 3}
|
||||
[:user-posts 1] #{5}}))
|
||||
|
@ -53,8 +53,8 @@
|
|||
[[:user-posts 1]]))
|
||||
|
||||
;; Unsubscribe all works.
|
||||
(subscribe! p vf/db vf/templates :ns [:users] 7)
|
||||
(subscribe! p vf/db vf/templates :ns [:users] 5)
|
||||
(subscribe! p vf/templates :ns [:users] 7)
|
||||
(subscribe! p vf/templates :ns [:users] 5)
|
||||
(unsubscribe-all! p :ns 5)
|
||||
(is (= (subscriptions p :ns [[:users] [:user-posts 1]])
|
||||
{[:users] #{7}}))))
|
||||
|
|
Loading…
Reference in a new issue