Bladeren bron

enhance: add :db/id to invalid entity map when validated failed

Tienson Qin 1 jaar geleden
bovenliggende
commit
16c7a52468

+ 1 - 0
deps/db/src/logseq/db.cljs

@@ -74,6 +74,7 @@
 
        ;; (prn :debug :transact :sync? (= d/transact! (or @*transact-fn d/transact!)) :tx-meta tx-meta)
        ;; (cljs.pprint/pprint tx-data)
+       ;; (js/console.trace)
 
        (let [f (or @*transact-fn d/transact!)]
          (try

+ 10 - 7
deps/db/src/logseq/db/frontend/malli_schema.cljs

@@ -136,14 +136,17 @@
   [datoms & {:keys [entity-fn]}]
   (let [ent-maps
         (reduce (fn [acc {:keys [a e v]}]
-                  (if (contains? db-schema/card-many-attributes a)
-                    (update acc e update a (fnil conj #{}) v)
+                  (let [acc (if (get-in acc [e :db/id])
+                              acc
+                              (assoc-in acc [e :db/id] e))]
+                    (if (contains? db-schema/card-many-attributes a)
+                     (update acc e update a (fnil conj #{}) v)
                     ;; If there's already a val, don't clobber it and automatically start collecting it as a :many
-                    (if-let [existing-val (get-in acc [e a])]
-                      (if (set? existing-val)
-                        (update acc e assoc a (conj existing-val v))
-                        (update acc e assoc a #{existing-val v}))
-                      (update acc e assoc a v))))
+                     (if-let [existing-val (get-in acc [e a])]
+                       (if (set? existing-val)
+                         (update acc e assoc a (conj existing-val v))
+                         (update acc e assoc a #{existing-val v}))
+                       (update acc e assoc a v)))))
                 {}
                 datoms)
         entity-fn' (or entity-fn

+ 7 - 3
deps/db/src/logseq/db/frontend/validate.cljs

@@ -4,7 +4,6 @@
             [logseq.db.frontend.malli-schema :as db-malli-schema]
             [malli.util :as mu]
             [malli.core :as m]
-            [cljs.pprint :as pprint]
             [malli.error :as me]))
 
 (defn update-schema
@@ -33,8 +32,13 @@
       (do
         (js/console.error "Invalid datascript entities detected amongst changed entity ids:" changed-ids)
         (doseq [m invalid-ent-maps]
-          (pprint/pprint {:entity-map m
-                          :errors (me/humanize (m/explain db-schema [m]))}))
+
+          (prn {:entity-map m
+                :errors (me/humanize (m/explain db-schema [m]))})
+          ;; FIXME: pprint fails sometime
+          ;; (pprint/pprint {;; :entity-map (map #(into {} %) m)
+          ;;                 :errors (me/humanize (m/explain db-schema [m]))})
+          )
         false)
       true)))