Przeglądaj źródła

fix: rebuild from datoms when db migration failed

Tienson Qin 5 miesięcy temu
rodzic
commit
73a8708b1b

+ 15 - 12
src/main/frontend/worker/db/migrate.cljs

@@ -828,18 +828,21 @@
                                                           (fn [col]
                                                             (reduce
                                                              (fn [col property]
-                                                               (mapv (fn [item]
-                                                                       (if (and (vector? item) (= property (first item)))
-                                                                         (let [[p o v] item
-                                                                               f (fn [id]
-                                                                                   (let [new-ident (get new-idents (:db/ident (d/entity db [:block/uuid id])))]
-                                                                                     (common-uuid/gen-uuid :db-ident-block-uuid new-ident)))
-                                                                               v' (if (set? v)
-                                                                                    (set (map f v))
-                                                                                    (f v))]
-                                                                           [p o v'])
-                                                                         item))
-                                                                     col))
+                                                               (vec
+                                                                (keep (fn [item]
+                                                                        (if (and (vector? item) (= property (first item)))
+                                                                          (let [[p o v] item
+                                                                                f (fn [id]
+                                                                                    (when-let [new-ident (get new-idents (:db/ident (d/entity db [:block/uuid id])))]
+                                                                                      (common-uuid/gen-uuid :db-ident-block-uuid new-ident)))
+                                                                                v' (if (set? v)
+                                                                                     (when-let [v' (seq (keep f v))]
+                                                                                       (set v'))
+                                                                                     (f v))]
+                                                                            (when v'
+                                                                              [p o v']))
+                                                                          item))
+                                                                      col)))
                                                              col
                                                              [:logseq.task/status :logseq.task/priority])))]
                                         [:db/add (:e d) :logseq.property.table/filters value]))))))]

+ 1 - 1
src/main/frontend/worker/db_worker.cljs

@@ -367,7 +367,7 @@
 
           (catch :default e
             (log/error "DB migrate failed, error: " e)
-            (if (and db-based? (= (:message e) "DB missing addresses"))
+            (if (and db-based? (= (.-message e) "DB missing addresses"))
               (do
                 (rebuild-db-from-datoms! conn db import-type)
                 (db-migrate/migrate conn search-db))