Remove db from persistence api.

This commit is contained in:
Alexander K. Hudek 2014-08-27 23:46:13 -04:00
parent 4d2da3f5a8
commit 5e1781fade
6 changed files with 18 additions and 18 deletions

View file

@ -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, ...}]

View file

@ -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

View file

@ -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])))

View file

@ -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)))

View file

@ -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"))))

View file

@ -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}}))))