From 7ed7fb4f311eef10a09512540a1aee1a0aa43431 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 13 Oct 2025 19:03:11 +0800 Subject: [PATCH] enhance: prefer ldb/transact! than d/transact! --- .../test/logseq/e2e/plugins_basic_test.clj | 2 +- deps/db/script/create_graph.cljs | 8 ++++---- deps/graph-parser/script/db_import.cljs | 3 ++- .../src/logseq/graph_parser/exporter.cljs | 6 +++--- deps/outliner/script/transact.cljs | 3 ++- deps/outliner/src/logseq/outliner/cli.cljs | 8 ++++---- deps/outliner/src/logseq/outliner/page.cljs | 2 +- src/main/frontend/worker/commands.cljs | 2 +- src/main/frontend/worker/crypt.cljs | 3 ++- src/main/frontend/worker/db_listener.cljs | 6 +++--- src/main/frontend/worker/db_worker.cljs | 6 +++--- src/main/frontend/worker/embedding.cljs | 6 +++--- src/main/frontend/worker/rtc/asset.cljs | 9 +++++---- src/main/frontend/worker/rtc/client_op.cljs | 19 ++++++++++--------- src/main/frontend/worker/rtc/core.cljs | 6 +++--- src/main/frontend/worker/rtc/db.cljs | 11 ++++++----- .../rtc/full_upload_download_graph.cljs | 10 +++++----- 17 files changed, 58 insertions(+), 52 deletions(-) diff --git a/clj-e2e/test/logseq/e2e/plugins_basic_test.clj b/clj-e2e/test/logseq/e2e/plugins_basic_test.clj index 5803fe57fb..d71022fed0 100644 --- a/clj-e2e/test/logseq/e2e/plugins_basic_test.clj +++ b/clj-e2e/test/logseq/e2e/plugins_basic_test.clj @@ -162,7 +162,7 @@ (testing "insert block with properties" (let [page "insert-block-properties-test" _ (page/new-page page) - ;; :checkbox, :number, :url, :json can be infered and default to :default, but not for :page + ;; :checkbox, :number, :url, :json can be inferred and default to :default, but not for :page b1 (ls-api-call! :editor.insertBlock page "b1" {:properties {"x1" true "x2" "https://logseq.com" "x3" 1 diff --git a/deps/db/script/create_graph.cljs b/deps/db/script/create_graph.cljs index c21f595c04..e5bc85ce26 100644 --- a/deps/db/script/create_graph.cljs +++ b/deps/db/script/create_graph.cljs @@ -5,7 +5,7 @@ ["path" :as node-path] [babashka.cli :as cli] [clojure.edn :as edn] - [datascript.core :as d] + [logseq.db :as ldb] [logseq.db.common.sqlite-cli :as sqlite-cli] [logseq.db.sqlite.export :as sqlite-export] [logseq.outliner.cli :as outliner-cli] @@ -51,9 +51,9 @@ (count (filter :block/title init-tx)) "blocks ...") ;; (fs/writeFileSync "txs.edn" (with-out-str (cljs.pprint/pprint _txs))) ;; (cljs.pprint/pprint _txs) - (d/transact! conn init-tx) - (when (seq block-props-tx) (d/transact! conn block-props-tx)) - (when (seq misc-tx) (d/transact! conn misc-tx)) + (ldb/transact! conn init-tx) + (when (seq block-props-tx) (ldb/transact! conn block-props-tx)) + (when (seq misc-tx) (ldb/transact! conn misc-tx)) (println (if graph-exists? "Updated graph" "Created graph") (str db-name "!")) (when (:validate options) (validate-db/validate-db @conn db-name {:group-errors true :closed-maps true :humanize true})))) diff --git a/deps/graph-parser/script/db_import.cljs b/deps/graph-parser/script/db_import.cljs index bfd6be8c1b..4d32c565ad 100644 --- a/deps/graph-parser/script/db_import.cljs +++ b/deps/graph-parser/script/db_import.cljs @@ -12,6 +12,7 @@ [datascript.core :as d] [logseq.common.config :as common-config] [logseq.common.graph :as common-graph] + [logseq.db :as ldb] [logseq.db.common.sqlite-cli :as sqlite-cli] [logseq.db.frontend.asset :as db-asset] [logseq.graph-parser.exporter :as gp-exporter] @@ -22,7 +23,7 @@ [promesa.core :as p])) (def tx-queue (atom cljs.core/PersistentQueue.EMPTY)) -(def original-transact! d/transact!) +(def original-transact! ldb/transact!) (defn dev-transact! [conn tx-data tx-meta] (swap! tx-queue (fn [queue] (let [new-queue (conj queue {:tx-data tx-data :tx-meta tx-meta})] diff --git a/deps/graph-parser/src/logseq/graph_parser/exporter.cljs b/deps/graph-parser/src/logseq/graph_parser/exporter.cljs index 3981c2eb82..848c09dea4 100644 --- a/deps/graph-parser/src/logseq/graph_parser/exporter.cljs +++ b/deps/graph-parser/src/logseq/graph_parser/exporter.cljs @@ -1791,7 +1791,7 @@ (split-pages-and-properties-tx pages-tx old-properties existing-pages (:import-state options) @(:upstream-properties tx-options)) ;; _ (when (seq property-pages-tx) (cljs.pprint/pprint {:property-pages-tx property-pages-tx})) ;; Necessary to transact new property entities first so that block+page properties can be transacted next - main-props-tx-report (d/transact! conn property-pages-tx {::new-graph? true ::path file}) + main-props-tx-report (ldb/transact! conn property-pages-tx {::new-graph? true ::path file}) _ (save-from-tx property-pages-tx options) classes-tx @(:classes-tx tx-options) @@ -1817,13 +1817,13 @@ ;; [:whiteboard-pages :pages-index :page-properties-tx :property-page-properties-tx :pages-tx' :classes-tx :blocks-index :blocks-tx] ;; [whiteboard-pages pages-index page-properties-tx property-page-properties-tx pages-tx' classes-tx blocks-index blocks-tx])) ;; _ (when (not (seq whiteboard-pages)) (cljs.pprint/pprint {#_:property-pages-tx #_property-pages-tx :pages-tx pages-tx :tx tx'})) - main-tx-report (d/transact! conn tx' {::new-graph? true ::path file}) + main-tx-report (ldb/transact! conn tx' {::new-graph? true ::path file}) _ (save-from-tx tx' options) upstream-properties-tx (build-upstream-properties-tx @conn @(:upstream-properties tx-options) (:import-state options) log-fn) ;; _ (when (seq upstream-properties-tx) (cljs.pprint/pprint {:upstream-properties-tx upstream-properties-tx})) - upstream-tx-report (when (seq upstream-properties-tx) (d/transact! conn upstream-properties-tx {::new-graph? true ::path file})) + upstream-tx-report (when (seq upstream-properties-tx) (ldb/transact! conn upstream-properties-tx {::new-graph? true ::path file})) _ (save-from-tx upstream-properties-tx options)] ;; Return all tx-reports that occurred in this fn as UI needs to know what changed diff --git a/deps/outliner/script/transact.cljs b/deps/outliner/script/transact.cljs index ed1b0a19a1..3a7302108a 100644 --- a/deps/outliner/script/transact.cljs +++ b/deps/outliner/script/transact.cljs @@ -2,6 +2,7 @@ "This script generically runs transactions against the queried blocks" (:require [clojure.edn :as edn] [datascript.core :as d] + [logseq.db :as ldb] [logseq.db.common.sqlite-cli :as sqlite-cli] [logseq.db.frontend.rules :as rules] [logseq.outliner.db-pipeline :as db-pipeline] @@ -30,7 +31,7 @@ (prn (map #(select-keys (d/entity @conn %) [:block/name :block/title]) blocks-to-update))) (do (db-pipeline/add-listener conn) - (d/transact! conn update-tx) + (ldb/transact! conn update-tx) (println "Updated" (count update-tx) "block(s) for graph" (str db-name "!")))))) (when (= nbb/*file* (nbb/invoked-file)) diff --git a/deps/outliner/src/logseq/outliner/cli.cljs b/deps/outliner/src/logseq/outliner/cli.cljs index 51c4889621..c1dab02f75 100644 --- a/deps/outliner/src/logseq/outliner/cli.cljs +++ b/deps/outliner/src/logseq/outliner/cli.cljs @@ -5,8 +5,8 @@ ["path" :as node-path] [borkdude.rewrite-edn :as rewrite] [clojure.string :as string] - [datascript.core :as d] [logseq.common.config :as common-config] + [logseq.db :as ldb] [logseq.db.common.sqlite-cli :as sqlite-cli] [logseq.db.sqlite.build :as sqlite-build] [logseq.db.sqlite.create-graph :as sqlite-create-graph] @@ -48,9 +48,9 @@ additional-config (pretty-print-merge additional-config)) git-sha (get-git-sha)] - (d/transact! conn (sqlite-create-graph/build-db-initial-data config-content - (merge {:import-type import-type} - (when git-sha {:graph-git-sha git-sha})))))) + (ldb/transact! conn (sqlite-create-graph/build-db-initial-data config-content + (merge {:import-type import-type} + (when git-sha {:graph-git-sha git-sha})))))) (defn init-conn "Create sqlite DB, initialize datascript connection and sync listener and then diff --git a/deps/outliner/src/logseq/outliner/page.cljs b/deps/outliner/src/logseq/outliner/page.cljs index 048b50c745..81d5449963 100644 --- a/deps/outliner/src/logseq/outliner/page.cljs +++ b/deps/outliner/src/logseq/outliner/page.cljs @@ -308,5 +308,5 @@ [conn title opts] (let [{:keys [tx-meta tx-data title' page-uuid]} (create @conn title opts)] (when (seq tx-data) - (d/transact! conn tx-data tx-meta) + (ldb/transact! conn tx-data tx-meta) [title' page-uuid]))) diff --git a/src/main/frontend/worker/commands.cljs b/src/main/frontend/worker/commands.cljs index 07626b4749..871368e6ae 100644 --- a/src/main/frontend/worker/commands.cljs +++ b/src/main/frontend/worker/commands.cljs @@ -156,7 +156,7 @@ default-value-tx-data [default-value-block {:db/id (:db/id property) :logseq.property/default-value [:block/uuid (:block/uuid default-value-block)]}]] - (d/transact! conn default-value-tx-data) + (ldb/transact! conn default-value-tx-data) 1)) unit (:logseq.property.repeat/recur-unit entity) property (d/entity db property-ident) diff --git a/src/main/frontend/worker/crypt.cljs b/src/main/frontend/worker/crypt.cljs index 2ccf0bb301..cc0b5d0a68 100644 --- a/src/main/frontend/worker/crypt.cljs +++ b/src/main/frontend/worker/crypt.cljs @@ -3,6 +3,7 @@ (:require [datascript.core :as d] [frontend.common.thread-api :refer [def-thread-api]] [frontend.worker.state :as worker-state] + [logseq.db :as ldb] [promesa.core :as p])) (defonce ^:private encoder (new js/TextEncoder "utf-8")) @@ -115,7 +116,7 @@ (assert (some? conn) repo) (let [aes-key-datom (first (d/datoms @conn :avet :aes-key-jwk))] (assert (nil? aes-key-datom) aes-key-datom) - (d/transact! conn [[:db/add "e1" :aes-key-jwk aes-key-jwk]])))) + (ldb/transact! conn [[:db/add "e1" :aes-key-jwk aes-key-jwk]])))) (defn get-graph-keys-jwk [repo] diff --git a/src/main/frontend/worker/db_listener.cljs b/src/main/frontend/worker/db_listener.cljs index b5cf8ade2c..e268049f9b 100644 --- a/src/main/frontend/worker/db_listener.cljs +++ b/src/main/frontend/worker/db_listener.cljs @@ -65,9 +65,9 @@ (map (fn [id] [:db/add id :logseq.property.embedding/hnsw-label-updated-at 0]))) tx-data (concat remove-old-hnsw-tx-data mark-embedding-tx-data)] (when (seq tx-data) - (d/transact! conn tx-data - {:skip-refresh? true - :pipeline-replace? true}))))) + (ldb/transact! conn tx-data + {:skip-refresh? true + :pipeline-replace? true}))))) (defn listen-db-changes! [repo conn & {:keys [handler-keys]}] diff --git a/src/main/frontend/worker/db_worker.cljs b/src/main/frontend/worker/db_worker.cljs index f64bf1c786..ae528b852a 100644 --- a/src/main/frontend/worker/db_worker.cljs +++ b/src/main/frontend/worker/db_worker.cljs @@ -255,8 +255,8 @@ (doseq [db (if @*publishing? [sqlite-db] [sqlite-db client-ops-db])] (sqlite-gc/gc-kvs-table! db {:full-gc? full-gc?}) (.exec db "VACUUM")) - (d/transact! datascript-conn [{:db/ident :logseq.kv/graph-last-gc-at - :kv/value (common-util/time-ms)}])))) + (ldb/transact! datascript-conn [{:db/ident :logseq.kv/graph-last-gc-at + :kv/value (common-util/time-ms)}])))) (defn- create-or-open-db! [repo {:keys [config datoms] :as opts}] @@ -295,7 +295,7 @@ (let [config (or config "") initial-data (sqlite-create-graph/build-db-initial-data config (select-keys opts [:import-type :graph-git-sha]))] - (d/transact! conn initial-data {:initial-db? true}))) + (ldb/transact! conn initial-data {:initial-db? true}))) (gc-sqlite-dbs! db client-ops-db conn {}) diff --git a/src/main/frontend/worker/embedding.cljs b/src/main/frontend/worker/embedding.cljs index 6078e56a84..fc64457455 100644 --- a/src/main/frontend/worker/embedding.cljs +++ b/src/main/frontend/worker/embedding.cljs @@ -179,7 +179,7 @@ (into-array (map :db/id stale-block-chunk)) false)) tx-data (labels-update-tx-data @conn e+updated-at-coll)] - (d/transact! conn tx-data {:skip-refresh? true}) + (ldb/transact! conn tx-data {:skip-refresh? true}) (m/? (task--update-index-info!* repo infer-worker true)) (c.m/url)) (m/reduce (constantly nil)))) diff --git a/src/main/frontend/worker/rtc/client_op.cljs b/src/main/frontend/worker/rtc/client_op.cljs index 8f84951296..90ca191de8 100644 --- a/src/main/frontend/worker/rtc/client_op.cljs +++ b/src/main/frontend/worker/rtc/client_op.cljs @@ -5,6 +5,7 @@ [frontend.worker.rtc.malli-schema :as rtc-schema] [frontend.worker.state :as worker-state] [lambdaisland.glogi :as log] + [logseq.db :as ldb] [logseq.db.sqlite.util :as sqlite-util] [malli.core :as ma] [malli.transform :as mt] @@ -101,7 +102,7 @@ [repo graph-uuid] {:pre [(some? graph-uuid)]} (when-let [conn (worker-state/get-client-ops-conn repo)] - (d/transact! conn [[:db/add "e" :graph-uuid graph-uuid]]))) + (ldb/transact! conn [[:db/add "e" :graph-uuid graph-uuid]]))) (defn get-graph-uuid [repo] @@ -117,13 +118,13 @@ (if-let [datom (first (d/datoms @conn :avet :local-tx))] [:db/add (:e datom) :local-tx t] [:db/add "e" :local-tx t])] - (d/transact! conn [tx-data])))) + (ldb/transact! conn [tx-data])))) (defn remove-local-tx [repo] (when-let [conn (worker-state/get-client-ops-conn repo)] (when-let [datom (first (d/datoms @conn :avet :local-tx))] - (d/transact! conn [[:db/retract (:e datom) :local-tx]])))) + (ldb/transact! conn [[:db/retract (:e datom) :local-tx]])))) (defn get-local-tx [repo] @@ -291,7 +292,7 @@ tx-data2 (when (seq update-kv-value-ops) (generate-ident-kv-ops-tx-data @conn update-kv-value-ops)) tx-data3 (when (seq rename-db-ident-ops) (generate-rename-db-ident-ops-tx-data rename-db-ident-ops))] (when-let [tx-data (not-empty (concat tx-data1 tx-data2 tx-data3))] - (d/transact! conn tx-data))))) + (ldb/transact! conn tx-data))))) (defn- get-all-block-ops* "Return e->op-map" @@ -352,7 +353,7 @@ (let [e->op-map (get-all-block-ops* @conn) retract-all-tx-data (mapcat (fn [e] (map (fn [a] [:db.fn/retractAttribute e a]) block-op-types)) (keys e->op-map))] - (d/transact! conn retract-all-tx-data) + (ldb/transact! conn retract-all-tx-data) (vals e->op-map))) (defn- get&remove-all-update-kv-value-ops* @@ -360,7 +361,7 @@ (let [e->op-map (get-all-update-kv-value-ops* @conn) retract-all-tx-data (mapcat (fn [e] (map (fn [a] [:db.fn/retractAttribute e a]) update-kv-value-op-types)) (keys e->op-map))] - (d/transact! conn retract-all-tx-data) + (ldb/transact! conn retract-all-tx-data) (vals e->op-map))) (defn- get&remove-all-rename-db-ident-ops* @@ -368,7 +369,7 @@ (let [e->op-map (get-all-rename-db-ident-ops* @conn) retract-all-tx-data (mapcat (fn [e] (map (fn [a] [:db.fn/retractAttribute e a]) db-ident-rename-op-types)) (keys e->op-map))] - (d/transact! conn retract-all-tx-data) + (ldb/transact! conn retract-all-tx-data) (vals e->op-map))) (defn get-all-block-ops @@ -468,7 +469,7 @@ (cond-> [{:block/uuid block-uuid :remove-asset op}] update-asset-op (conj [:db.fn/retractAttribute e :update-asset]))))))] - (d/transact! conn tx-data))))))) + (ldb/transact! conn tx-data))))))) (defn add-all-exists-asset-as-ops [repo] @@ -516,7 +517,7 @@ (when-let [conn (worker-state/get-client-ops-conn repo)] (let [ent (d/entity @conn [:block/uuid asset-uuid])] (when-let [e (:db/id ent)] - (d/transact! conn (map (fn [a] [:db.fn/retractAttribute e a]) asset-op-types)))))) + (ldb/transact! conn (map (fn [a] [:db.fn/retractAttribute e a]) asset-op-types)))))) (defn create-pending-asset-ops-count-flow [repo] diff --git a/src/main/frontend/worker/rtc/core.cljs b/src/main/frontend/worker/rtc/core.cljs index 8d100f274c..3cf1d315c2 100644 --- a/src/main/frontend/worker/rtc/core.cljs +++ b/src/main/frontend/worker/rtc/core.cljs @@ -156,9 +156,9 @@ (defn- update-remote-schema-version! [conn server-schema-version] (when server-schema-version - (d/transact! conn [(ldb/kv :logseq.kv/remote-schema-version server-schema-version)] - {:gen-undo-ops? false - :persist-op? false}))) + (ldb/transact! conn [(ldb/kv :logseq.kv/remote-schema-version server-schema-version)] + {:gen-undo-ops? false + :persist-op? false}))) (defonce ^:private *rtc-lock (atom nil)) (defn- holding-rtc-lock diff --git a/src/main/frontend/worker/rtc/db.cljs b/src/main/frontend/worker/rtc/db.cljs index ad574e495c..3230e9e665 100644 --- a/src/main/frontend/worker/rtc/db.cljs +++ b/src/main/frontend/worker/rtc/db.cljs @@ -1,14 +1,15 @@ (ns frontend.worker.rtc.db "rtc db ops" (:require [datascript.core :as d] - [frontend.worker.state :as worker-state])) + [frontend.worker.state :as worker-state] + [logseq.db :as ldb])) (defn remove-rtc-data-from-local-db! [repo] (when-let [conn (worker-state/get-datascript-conn repo)] - (d/transact! conn [[:db/retractEntity :logseq.kv/graph-uuid] - [:db/retractEntity :logseq.kv/graph-local-tx] - [:db/retractEntity :logseq.kv/remote-schema-version]]))) + (ldb/transact! conn [[:db/retractEntity :logseq.kv/graph-uuid] + [:db/retractEntity :logseq.kv/graph-local-tx] + [:db/retractEntity :logseq.kv/remote-schema-version]]))) (defn reset-client-op-conn [repo] @@ -18,7 +19,7 @@ (d/datoms @conn :avet :aes-key-jwk) (d/datoms @conn :avet :block/uuid)) (map (fn [datom] [:db/retractEntity (:e datom)])))] - (d/transact! conn tx-data)))) + (ldb/transact! conn tx-data)))) (defn remove-rtc-data-in-conn! [repo] diff --git a/src/main/frontend/worker/rtc/full_upload_download_graph.cljs b/src/main/frontend/worker/rtc/full_upload_download_graph.cljs index 8f75a29e2f..53165c3b47 100644 --- a/src/main/frontend/worker/rtc/full_upload_download_graph.cljs +++ b/src/main/frontend/worker/rtc/full_upload_download_graph.cljs @@ -215,11 +215,11 @@ (when-let [conn (worker-state/get-datascript-conn repo)] (let [db @conn] (when-let [schema-version (:kv/value (d/entity db :logseq.kv/schema-version))] - (d/transact! conn - [(ldb/kv :logseq.kv/remote-schema-version schema-version)] - {:rtc-download-graph? true - :gen-undo-ops? false - :persist-op? false}))))) + (ldb/transact! conn + [(ldb/kv :logseq.kv/remote-schema-version schema-version)] + {:rtc-download-graph? true + :gen-undo-ops? false + :persist-op? false}))))) (defn-