|
|
@@ -7,22 +7,37 @@
|
|
|
|
|
|
(defn- fix-invalid-blocks!
|
|
|
[conn errors]
|
|
|
- (let [tx-data (keep
|
|
|
+ (let [tx-data (mapcat
|
|
|
(fn [{:keys [entity dispatch-key]}]
|
|
|
(let [entity (d/entity @conn (:db/id entity))]
|
|
|
(cond
|
|
|
+ (and (= dispatch-key :block) (nil? (:block/title entity)))
|
|
|
+ [[:db/retractEntity (:db/id entity)]]
|
|
|
+
|
|
|
+ (and (= dispatch-key :block) (nil? (:block/page entity)))
|
|
|
+ (let [latest-journal-id (:db/id (first (ldb/get-latest-journals @conn)))
|
|
|
+ page-id (:db/id (:block/page (:block/parent entity)))]
|
|
|
+ (cond
|
|
|
+ page-id
|
|
|
+ [[:db/add (:db/id entity) :block/page page-id]]
|
|
|
+ latest-journal-id
|
|
|
+ [[:db/add (:db/id entity) :block/page latest-journal-id]
|
|
|
+ [:db/add (:db/id entity) :block/parent latest-journal-id]]
|
|
|
+ :else
|
|
|
+ (js/console.error (str "Don't know where to put the block " (:db/id entity)))))
|
|
|
+
|
|
|
(:block.temp/fully-loaded? entity)
|
|
|
- [:db/retract (:db/id entity) :block.temp/fully-loaded?]
|
|
|
+ [[:db/retract (:db/id entity) :block.temp/fully-loaded?]]
|
|
|
(and (:block/page entity) (not (:block/parent entity)))
|
|
|
- [:db/add (:db/id entity) :block/parent (:db/id (:block/page entity))]
|
|
|
+ [[:db/add (:db/id entity) :block/parent (:db/id (:block/page entity))]]
|
|
|
(and (not (:block/page entity)) (not (:block/parent entity)) (not (:block/name entity)))
|
|
|
- [:db/retractEntity (:db/id entity)]
|
|
|
+ [[:db/retractEntity (:db/id entity)]]
|
|
|
(and (= dispatch-key :property-value-block) (:block/title entity))
|
|
|
- [:db/retract (:db/id entity) :block/title]
|
|
|
+ [[:db/retract (:db/id entity) :block/title]]
|
|
|
(and (ldb/class? entity) (not (:logseq.property.class/extends entity)))
|
|
|
- [:db/add (:db/id entity) :logseq.property.class/extends :logseq.class/Root]
|
|
|
+ [[:db/add (:db/id entity) :logseq.property.class/extends :logseq.class/Root]]
|
|
|
(and (or (ldb/class? entity) (ldb/property? entity)) (ldb/internal-page? entity))
|
|
|
- [:db/retract (:db/id entity) :block/tags :logseq.class/Page]
|
|
|
+ [[:db/retract (:db/id entity) :block/tags :logseq.class/Page]]
|
|
|
:else
|
|
|
nil)))
|
|
|
errors)]
|