mirror of
https://github.com/logseq/logseq.git
synced 2026-05-28 14:39:48 +00:00
fix: edn export
This commit is contained in:
23
deps/db/src/logseq/db/sqlite/export.cljs
vendored
23
deps/db/src/logseq/db/sqlite/export.cljs
vendored
@@ -39,6 +39,27 @@
|
||||
(or (block-title pvalue)
|
||||
(:logseq.property/value pvalue)))
|
||||
|
||||
(defn- referenced-property-value-contents
|
||||
[db property]
|
||||
(->> (d/datoms db :avet (:db/ident property))
|
||||
(keep (fn [datom]
|
||||
(some->> (:v datom)
|
||||
(d/entity db)
|
||||
property-value-content)))
|
||||
set))
|
||||
|
||||
(defn- closed-values-for-export
|
||||
[db property]
|
||||
(let [referenced-contents (referenced-property-value-contents db property)]
|
||||
(->> (concat (entity-plus/lookup-kv-then-entity property :property/closed-values)
|
||||
(filter #(contains? referenced-contents (property-value-content %))
|
||||
(:block/_closed-value-property property)))
|
||||
(reduce (fn [closed-values value]
|
||||
(assoc closed-values (:db/id value) value))
|
||||
{})
|
||||
vals
|
||||
(sort-by :block/order))))
|
||||
|
||||
(defn- shallow-copy-page
|
||||
"Given a page or journal entity, shallow copies it e.g. no properties or tags info included.
|
||||
Pages that are shallow copied are at the edges of export and help keep the export size reasonable and
|
||||
@@ -147,7 +168,7 @@
|
||||
(->> user-property-idents
|
||||
(map (fn [ident]
|
||||
(let [property (d/entity db ident)
|
||||
closed-values (entity-plus/lookup-kv-then-entity property :property/closed-values)]
|
||||
closed-values (closed-values-for-export db property)]
|
||||
[property
|
||||
(cond-> (select-keys property
|
||||
(-> (disj db-property/schema-properties :logseq.property/classes)
|
||||
|
||||
37
deps/db/test/logseq/db/sqlite/export_test.cljs
vendored
37
deps/db/test/logseq/db/sqlite/export_test.cljs
vendored
@@ -553,6 +553,43 @@
|
||||
(get-in export-edn [:classes :user.class/MyClass :build/class-properties])))
|
||||
(is (not (contains? (:properties export-edn) legacy-property)))))
|
||||
|
||||
(deftest graph-export-omits-legacy-plugin-property-schema-attrs
|
||||
(let [plugin-property :plugin.property.degrande-colors/mugpet_degrande_colors_controls
|
||||
conn (db-test/create-conn-with-import-map
|
||||
{:properties {plugin-property {:logseq.property/type :json}}
|
||||
:pages-and-blocks [{:page {:block/title "page1"}
|
||||
:blocks [{:block/title "b1"}]}]})
|
||||
plugin-property-ent (d/entity @conn plugin-property)
|
||||
_ (d/transact! conn [{:db/id (:db/id plugin-property-ent)
|
||||
:hide? true
|
||||
:public? false}])
|
||||
export-edn (sqlite-export/build-export @conn {:export-type :graph})
|
||||
validation (sqlite-export/validate-export export-edn)]
|
||||
(is (nil? (:error validation)))
|
||||
(is (= {:logseq.property/type :json
|
||||
:db/cardinality :db.cardinality/one
|
||||
:block/title "mugpet_degrande_colors_controls"}
|
||||
(get-in export-edn [:properties plugin-property])))))
|
||||
|
||||
(deftest graph-export-keeps-referenced-recycled-closed-value-config
|
||||
(let [property-id :plugin.property.degrande-colors/tldraw
|
||||
closed-value-uuid (random-uuid)
|
||||
conn (db-test/create-conn-with-import-map
|
||||
{:properties {property-id {:logseq.property/type :default
|
||||
:build/closed-values [{:value "tldraw"
|
||||
:uuid closed-value-uuid}]}}
|
||||
:pages-and-blocks [{:page {:block/title "page1"}
|
||||
:blocks [{:block/title "b1"
|
||||
:build/properties {property-id [:block/uuid closed-value-uuid]}}]}]})
|
||||
closed-value (d/entity @conn [:block/uuid closed-value-uuid])
|
||||
_ (d/transact! conn [{:db/id (:db/id closed-value)
|
||||
:logseq.property/deleted-at 1}])
|
||||
export-edn (sqlite-export/build-export @conn {:export-type :graph})
|
||||
validation (sqlite-export/validate-export export-edn)]
|
||||
(is (nil? (:error validation)))
|
||||
(is (= [{:value "tldraw" :uuid closed-value-uuid}]
|
||||
(get-in export-edn [:properties property-id :build/closed-values])))))
|
||||
|
||||
(deftest import-view-blocks
|
||||
(let [original-data
|
||||
;; Test a mix of page and block types
|
||||
|
||||
Reference in New Issue
Block a user