Browse Source

enhance(db-sync): make fns pure for RUNNING-TESTS

rcmerci 2 years ago
parent
commit
ac33f966a3
1 changed files with 65 additions and 29 deletions
  1. 65 29
      src/main/frontend/db/rtc/core.cljs

+ 65 - 29
src/main/frontend/db/rtc/core.cljs

@@ -77,14 +77,54 @@
 (def transit-w (transit/writer :json))
 (def transit-r (transit/reader :json))
 
+(def ^{:private true :dynamic true} *RUNNING-TESTS* "true when running tests" false)
+(defmulti transact-db! (fn [action & _args]
+                        (keyword (str (name action) (when *RUNNING-TESTS* "-for-test")))))
+
+(defmethod transact-db! :delete-blocks [_ & args]
+  (outliner-tx/transact!
+   {:persist-op? false}
+   (apply outliner-core/delete-blocks! args)))
+
+(defmethod transact-db! :delete-blocks-for-test [_ & args]
+  (prn ::delete-block-for-test args))
+
+(defmethod transact-db! :move-blocks [_ & args]
+  (outliner-tx/transact!
+   {:persist-op? false}
+   (apply outliner-core/move-blocks! args)))
+
+(defmethod transact-db! :move-blocks-for-test [_ & args]
+  (prn ::move-blocks-for-test args))
+
+(defmethod transact-db! :insert-blocks [_ & args]
+  (outliner-tx/transact!
+   {:persist-op? false}
+   (apply outliner-core/insert-blocks! args)))
+
+(defmethod transact-db! :insert-blocks-for-test [_ & args]
+  (prn ::insert-blocks-for-test args))
+
+(defmethod transact-db! :save-block [_ & args]
+  (outliner-tx/transact!
+   {:persist-op? false}
+   (apply outliner-core/save-block! args)))
+
+(defmethod transact-db! :save-block-for-test [_ & args]
+  (prn ::save-block-for-test args))
+
+(defmethod transact-db! :raw [_ & args]
+  (apply db/transact! args))
+
+(defmethod transact-db! :raw-for-test [_ & args]
+  (prn ::raw-for-test args))
+
 (defn apply-remote-remove-ops
   [repo remove-ops]
   (prn :remove-ops remove-ops)
   (doseq [op remove-ops]
     (when-let [block (db/pull repo '[*] [:block/uuid (uuid (:block-uuid op))])]
-      (outliner-tx/transact!
-       {:persist-op? false}
-       (outliner-core/delete-blocks! [block] {:children? false}))
+      (transact-db! :delete-blocks [block] {:children? false})
       (prn :apply-remote-remove-ops (:block-uuid op)))))
 
 (defn- insert-or-move-block
@@ -98,33 +138,30 @@
           ]
       (case [(some? local-parent) (some? local-left)]
         [false true]
-        (outliner-tx/transact!
-         {:persist-op? false}
-         (if move?
-           (outliner-core/move-blocks! [b] local-left true)
-           (outliner-core/insert-blocks! [{:block/uuid (uuid block-uuid-str) :block/content ""
-                                           :block/format :markdown}]
-                                         local-left {:sibling? true :keep-uuid? true})))
+        (if move?
+          (transact-db! :move-blocks [b] local-left true)
+          (transact-db! :insert-blocks
+                        [{:block/uuid (uuid block-uuid-str)
+                          :block/content ""
+                          :block/format :markdown}]
+                        local-left {:sibling? true :keep-uuid? true}))
 
         [true true]
         (let [sibling? (not= (:block/uuid local-parent) (:block/uuid local-left))]
-          (outliner-tx/transact!
-           {:persist-op? false}
-           (if move?
-             (outliner-core/move-blocks! [b] local-left sibling?)
-             (outliner-core/insert-blocks! [{:block/uuid (uuid block-uuid-str) :block/content ""
-                                             :block/format :markdown}]
-                                           local-left {:sibling? sibling? :keep-uuid? true}))))
+          (if move?
+            (transact-db! :move-blocks [b] local-left sibling?)
+            (transact-db! :insert-blocks
+                          [{:block/uuid (uuid block-uuid-str) :block/content ""
+                            :block/format :markdown}]
+                          local-left {:sibling? sibling? :keep-uuid? true})))
 
         [true false]
-        (outliner-tx/transact!
-         {:persist-op? false}
-         (if move?
-           (outliner-core/move-blocks! [b] local-parent false)
-           (outliner-core/insert-blocks! [{:block/uuid (uuid block-uuid-str) :block/content ""
-                                           :block/format :markdown}]
-                                         local-parent {:sibling? false :keep-uuid? true})))
-
+        (if move?
+          (transact-db! :move-blocks [b] local-parent false)
+          (transact-db! :insert-blocks
+                        [{:block/uuid (uuid block-uuid-str) :block/content ""
+                          :block/format :markdown}]
+                        local-parent {:sibling? false :keep-uuid? true}))
         (throw (ex-info "Don't know where to insert" {:block-uuid block-uuid-str :remote-parents remote-parents
                                                       :remote-left remote-left-uuid-str}))))))
 
@@ -198,11 +235,10 @@
               ;; (contains? key-set :properties)     (assoc :block/properties
               ;;                                            (transit/read transit-r (:properties op-value)))
               )]
-        (outliner-tx/transact!
-         {:persist-op? false}
-         (outliner-core/save-block! new-block))
+        (transact-db! :save-block new-block)
         (let [properties (transit/read transit-r (:properties op-value))]
-          (db/transact! repo
+          (transact-db! :raw
+                        repo
                         [{:block/uuid block-uuid
                           :block/properties properties}]
                         {:outliner-op :save-block}))))))