fix: don't cache entity which refer the db

This commit is contained in:
rcmerci
2025-08-28 22:11:22 +08:00
parent 3ffb5968cb
commit 4186bb0731
2 changed files with 20 additions and 11 deletions

View File

@@ -17,6 +17,7 @@
[frontend.state :as state]
[frontend.util :as util]
[logseq.common.util :as common-util]
[logseq.db :as ldb]
[promesa.core :as p]))
(def ^:private yyyyMMdd-formatter (tf/formatter "yyyyMMdd"))
@@ -110,8 +111,9 @@
:else
(->
(p/let [result (state/<invoke-db-worker :thread-api/get-blocks graph
[{:id id :opts opts}])
(p/let [result-transit-str (state/<invoke-db-worker-direct-pass :thread-api/get-blocks graph
(ldb/write-transit-str [{:id id :opts opts}]))
result (ldb/read-transit-str result-transit-str)
{:keys [block children]} (first result)]
(when-not skip-transact?
(let [conn (db/get-db graph false)
@@ -139,10 +141,14 @@
[graph ids* & {:as opts}]
(let [ids (remove (fn [id] (:block.temp/load-status (db/entity id))) ids*)]
(when (seq ids)
(p/let [result (state/<invoke-db-worker :thread-api/get-blocks graph
(map (fn [id]
{:id id :opts (assoc opts :children? false)})
ids))]
(p/let [result-transit-str
(state/<invoke-db-worker-direct-pass :thread-api/get-blocks graph
(ldb/write-transit-str
(map
(fn [id]
{:id id :opts (assoc opts :children? false)})
ids)))
result (ldb/read-transit-str result-transit-str)]
(let [conn (db/get-db graph false)
result' (map :block result)]
(when (seq result')

View File

@@ -436,14 +436,17 @@
[db requests]]))
(fn [db requests]
(when db
(mapv (fn [{:keys [id opts]}]
(let [id' (if (and (string? id) (common-util/uuid-string? id)) (uuid id) id)]
(-> (common-initial-data/get-block-and-children db id' opts)
(assoc :id id)))) requests)))))
(->> requests
(mapv (fn [{:keys [id opts]}]
(let [id' (if (and (string? id) (common-util/uuid-string? id)) (uuid id) id)]
(-> (common-initial-data/get-block-and-children db id' opts)
(assoc :id id)))))
ldb/write-transit-str)))))
(def-thread-api :thread-api/get-blocks
[repo requests]
(get-blocks-with-cache repo requests))
(let [requests (ldb/read-transit-str requests)]
(get-blocks-with-cache repo requests)))
(def-thread-api :thread-api/get-block-refs
[repo id]