Clean up database interop
This commit is contained in:
parent
905fe2bd88
commit
2b78afde38
2 changed files with 17 additions and 20 deletions
|
|
@ -156,10 +156,8 @@
|
||||||
(declare refresh-displayed-posts!)
|
(declare refresh-displayed-posts!)
|
||||||
|
|
||||||
(defn- fetch-application-settings []
|
(defn- fetch-application-settings []
|
||||||
(-> (db/open-cursor! ::db/application db/all)
|
(->> (db/open-cursor! ::db/application db/all)
|
||||||
(db/transduce-cursor (comp (take 1)
|
(db/first-result (map #(js->clj % :keywordize-keys true)))))
|
||||||
(map #(js->clj % :keywordize-keys true)))
|
|
||||||
(fn [_ x] x))))
|
|
||||||
|
|
||||||
(defn setup-application!
|
(defn setup-application!
|
||||||
"Handles Mastodon application setup on the client side"
|
"Handles Mastodon application setup on the client side"
|
||||||
|
|
@ -377,8 +375,8 @@
|
||||||
refresh-id (js/Date.now)]
|
refresh-id (js/Date.now)]
|
||||||
(swap! state update-in [:section/posts :loading] conj refresh-id)
|
(swap! state update-in [:section/posts :loading] conj refresh-id)
|
||||||
(. (promise-all [(db/count! ::db/posts)
|
(. (promise-all [(db/count! ::db/posts)
|
||||||
(-> (db/open-cursor! ::db/posts ::db/post-created-at db/all "prev")
|
(->> (db/open-cursor! ::db/posts ::db/post-created-at db/all "prev")
|
||||||
(db/transduce-cursor xform))])
|
(db/transduce-cursor xform))])
|
||||||
(then (fn [[total displayed-posts]]
|
(then (fn [[total displayed-posts]]
|
||||||
(swap! state update :section/posts #(-> (assoc % :total total)
|
(swap! state update :section/posts #(-> (assoc % :total total)
|
||||||
(assoc :displayed-posts displayed-posts)
|
(assoc :displayed-posts displayed-posts)
|
||||||
|
|
@ -407,12 +405,10 @@
|
||||||
(paginate-posts! (merge defaults opts))))
|
(paginate-posts! (merge defaults opts))))
|
||||||
|
|
||||||
(defn- internal-post-id [max-or-min]
|
(defn- internal-post-id [max-or-min]
|
||||||
(-> (db/open-cursor! ::db/posts ::db/post-created-at db/all (if (= max-or-min :min)
|
(->> (db/open-cursor! ::db/posts ::db/post-created-at db/all (if (= max-or-min :min)
|
||||||
"next"
|
"next"
|
||||||
"prev"))
|
"prev"))
|
||||||
(db/transduce-cursor (comp (keep (j/get :internal_id))
|
(db/first-result (keep (j/get :internal_id)))))
|
||||||
(take 1))
|
|
||||||
(fn [_ x] x))))
|
|
||||||
|
|
||||||
(defn fetch-more-posts! [e]
|
(defn fetch-more-posts! [e]
|
||||||
(.preventDefault e)
|
(.preventDefault e)
|
||||||
|
|
|
||||||
|
|
@ -103,13 +103,13 @@
|
||||||
Takes a transducer `xform`, a reducing function `rf` and an initial `init`.
|
Takes a transducer `xform`, a reducing function `rf` and an initial `init`.
|
||||||
If no `init` is given, it will default to `(rf)`. If no `rf` is given, the
|
If no `init` is given, it will default to `(rf)`. If no `rf` is given, the
|
||||||
resulting value will be a persistent vector containing the result of all steps."
|
resulting value will be a persistent vector containing the result of all steps."
|
||||||
([cursor-req xform]
|
([xform cursor-req]
|
||||||
; optimization: work with a transient vector before returning the final result
|
; optimization: work with a transient vector before returning the final result
|
||||||
(-> (transduce-cursor cursor-req xform conj! (transient []))
|
(-> (transduce-cursor xform conj! (transient []) cursor-req)
|
||||||
(.then persistent!)))
|
(.then persistent!)))
|
||||||
([cursor-req xform rf]
|
([xform rf cursor-req]
|
||||||
(transduce-cursor cursor-req xform rf (rf)))
|
(transduce-cursor xform rf (rf) cursor-req))
|
||||||
([cursor-req xform rf init]
|
([xform rf init cursor-req]
|
||||||
(let [result (volatile! init)
|
(let [result (volatile! init)
|
||||||
xform (xform rf)]
|
xform (xform rf)]
|
||||||
(js/Promise.
|
(js/Promise.
|
||||||
|
|
@ -121,14 +121,15 @@
|
||||||
; to avoid unnecessary conversion costs.
|
; to avoid unnecessary conversion costs.
|
||||||
(let [step (xform @result (.-value cursor))]
|
(let [step (xform @result (.-value cursor))]
|
||||||
(if (reduced? step)
|
(if (reduced? step)
|
||||||
(do
|
(resolve @step)
|
||||||
(vreset! result @step)
|
|
||||||
(resolve @result))
|
|
||||||
(do
|
(do
|
||||||
(vreset! result step)
|
(vreset! result step)
|
||||||
(.continue cursor))))
|
(.continue cursor))))
|
||||||
(resolve @result)))))))))
|
(resolve @result)))))))))
|
||||||
|
|
||||||
|
(defn first-result [xform cursor-req]
|
||||||
|
(transduce-cursor (comp xform (take 1)) (fn [_ x] x) cursor-req))
|
||||||
|
|
||||||
(def all (js/IDBKeyRange.lowerBound ""))
|
(def all (js/IDBKeyRange.lowerBound ""))
|
||||||
|
|
||||||
(comment
|
(comment
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue