Browse Source

fix: :block/alias not exported with :page export

Fixes https://github.com/logseq/db-test/issues/305
Gabriel Horner 6 months ago
parent
commit
0f3957ace8
1 changed files with 10 additions and 3 deletions
  1. 10 3
      deps/db/src/logseq/db/sqlite/export.cljs

+ 10 - 3
deps/db/src/logseq/db/sqlite/export.cljs

@@ -447,7 +447,9 @@
     (merge {::block (:node node-export)}
            block-export)))
 
-(defn- build-page-blocks-export [db page-entity {:keys [properties classes blocks ontology-page? include-alias?] :as options}]
+(defn- build-page-blocks-export
+  "If :include-alias? option is set, the caller fn is responsible for defining alias pages"
+  [db page-entity {:keys [properties classes blocks ontology-page? include-alias?] :as options}]
   (let [options' (cond-> (dissoc options :classes :blocks :graph-ontology)
                    (:exclude-ontology? options)
                    (assoc :properties (get-in options [:graph-ontology :properties])))
@@ -493,10 +495,15 @@
   (let [page-blocks* (get-page-blocks db eid)
         {:keys [content-ref-ents] :as content-ref-export} (build-content-ref-export db page-blocks*)
         {:keys [pvalue-uuids] :as page-export*}
-        (build-page-export* db eid page-blocks* {:include-uuid-fn (:content-ref-uuids content-ref-export)})
+        (build-page-export* db eid page-blocks* {:include-uuid-fn (:content-ref-uuids content-ref-export)
+                                                 :include-alias? true})
         page-entity (d/entity db eid)
         uuid-block-export (build-uuid-block-export db pvalue-uuids content-ref-ents {:page-entity page-entity})
-        page-export (finalize-export-maps db page-export* uuid-block-export content-ref-export)]
+        alias-export (when (:block/alias page-entity)
+                       {:pages-and-blocks (mapv #(hash-map :page (merge (shallow-copy-page %)
+                                                                        {:block/uuid (:block/uuid %) :build/keep-uuid? true}))
+                                                (:block/alias page-entity))})
+        page-export (finalize-export-maps db page-export* uuid-block-export content-ref-export alias-export)]
     page-export))
 
 (defn- build-nodes-export