Merge branch 'feat/db' of https://github.com/logseq/logseq into feat/db

pull/11102/head
charlie 2024-03-05 13:10:09 +08:00
commit cca239dafe
3 changed files with 33 additions and 1 deletions

View File

@ -59,7 +59,8 @@
(println "Importing" (count files) "files ...")
(p/do!
(gp-exporter/import-logseq-files conn logseq-files <read-file {:notify-user prn})
(gp-exporter/import-from-doc-files! conn doc-files <read-file import-options))))
(gp-exporter/import-from-doc-files! conn doc-files <read-file import-options)
(gp-exporter/import-class-properties conn conn))))
(defn- resolve-path
"If relative path, resolve with $ORIGINAL_PWD"

View File

@ -14,6 +14,7 @@
[logseq.db.sqlite.util :as sqlite-util]
[logseq.db :as ldb]
[logseq.db.frontend.rules :as rules]
[logseq.db.frontend.class :as db-class]
[logseq.common.util.page-ref :as page-ref]
[promesa.core :as p]))
@ -723,3 +724,32 @@
:level :error
:ex-data {:error err}})
(edn/read-string default-config)))))
(defn import-class-properties
[conn repo-or-conn]
(let [user-classes (->> (d/q '[:find (pull ?b [:db/id :block/name])
:where [?b :block/type "class"]] @conn)
(map first)
(remove #(db-class/built-in-classes (keyword (:block/name %)))))
class-to-prop-uuids
(->> (d/q '[:find ?t ?prop-name ?prop-uuid #_?class
:in $ ?user-classes
:where
[?b :block/tags ?t]
[?t :block/name ?class]
[(contains? ?user-classes ?class)]
[?b :block/properties ?bp]
[?prop-b :block/name ?prop-name]
[?prop-b :block/uuid ?prop-uuid]
[(get ?bp ?prop-uuid) ?_v]]
@conn
(set (map :block/name user-classes)))
(remove #(db-property/built-in-properties-keys-str (second %)))
(reduce (fn [acc [class-id _prop-name prop-uuid]]
(update acc class-id (fnil conj #{}) prop-uuid))
{}))
tx (mapv (fn [[class-id prop-ids]]
{:db/id class-id
:block/schema {:properties (vec prop-ids)}})
class-to-prop-uuids)]
(ldb/transact! repo-or-conn tx)))

View File

@ -387,6 +387,7 @@
(async/<! (import-from-asset-files! asset-files))
(async/<! (p->c (gp-exporter/import-from-doc-files! db-conn doc-files <read-file import-options)))
(async/<! (p->c (import-favorites-from-config-edn! db-conn repo config-file)))
(async/<! (p->c (gp-exporter/import-class-properties db-conn repo)))
(log/info :import-file-graph {:msg (str "Import finished in " (/ (t/in-millis (t/interval start-time (t/now))) 1000) " seconds")})
(state/set-state! :graph/importing nil)
(state/set-state! :graph/importing-state nil)