From 9f66e6d7e7df07fa9d01bdf0ef40f48fe2c790bd Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Tue, 9 Jan 2024 16:04:03 +0800 Subject: [PATCH] fix: don't fix pages for whiteboards and hidden pages --- deps/db/src/logseq/db.cljs | 49 ++++++------------- .../src/logseq/db/frontend/property/util.cljs | 2 +- .../db/src/logseq/db/sqlite/create_graph.cljs | 9 ++-- src/main/frontend/db/conn.cljs | 8 +-- .../frontend/handler/db_based/property.cljs | 3 +- src/main/frontend/handler/draw.cljs | 1 - src/main/frontend/worker/db/fix.cljs | 27 +++++----- 7 files changed, 41 insertions(+), 58 deletions(-) diff --git a/deps/db/src/logseq/db.cljs b/deps/db/src/logseq/db.cljs index 0ef142b666..b47502b7ae 100644 --- a/deps/db/src/logseq/db.cljs +++ b/deps/db/src/logseq/db.cljs @@ -66,52 +66,33 @@ (let [f (or @*transact-fn d/transact!)] (f conn tx-data tx-meta)))))) +(defn build-default-pages-tx + [] + (let [time (tc/to-long (t/now))] + (map + (fn [m] + (-> m + (assoc :block/created-at time) + (assoc :block/updated-at time) + (assoc :block/format :markdown))) + default-db/built-in-pages))) + (defn create-default-pages! "Creates default pages if one of the default pages does not exist. This fn is idempotent" - [db-conn {:keys [db-graph?]}] + [db-conn _opts] (when-not (d/entity @db-conn [:block/name "card"]) - (let [time (tc/to-long (t/now)) - built-in-pages (map - (fn [m] - (cond-> (-> m - (assoc :block/created-at time) - (assoc :block/updated-at time)) - db-graph? - (assoc :block/format :markdown))) - default-db/built-in-pages)] + (let [built-in-pages (build-default-pages-tx)] (transact! db-conn built-in-pages)))) -(defn create-built-in-properties! - [conn] - (let [txs (mapcat - (fn [[k-keyword {:keys [schema original-name] :as property-config}]] - (let [k-name (name k-keyword)] - (if (:closed-values property-config) - (db-property-util/build-closed-values - (or original-name k-name) - (assoc property-config :block/uuid (d/squuid)) - {}) - [(sqlite-util/build-new-property - {:block/schema schema - :block/original-name (or original-name k-name) - :block/name (string/lower-case k-name) - :block/uuid (d/squuid)})]))) - db-property/built-in-properties)] - (when (seq txs) - (d/transact! conn txs)))) - (defn start-conn "Create datascript conn with schema and default data" - [& {:keys [create-default-pages? schema file-based?] + [& {:keys [create-default-pages? schema] :or {create-default-pages? true schema db-schema/schema}}] - (let [db-conn (d/create-conn schema) - file-based? (or (= schema db-schema/schema) file-based?)] + (let [db-conn (d/create-conn schema)] (when create-default-pages? (create-default-pages! db-conn {})) - (when-not file-based? - (create-built-in-properties! db-conn)) db-conn)) (defn sort-by-left diff --git a/deps/db/src/logseq/db/frontend/property/util.cljs b/deps/db/src/logseq/db/frontend/property/util.cljs index 764f148d6f..4a56d61d23 100644 --- a/deps/db/src/logseq/db/frontend/property/util.cljs +++ b/deps/db/src/logseq/db/frontend/property/util.cljs @@ -19,7 +19,7 @@ "Builds a closed value block to be transacted" [block-uuid block-value page-id property {:keys [icon-id icon description]}] (cond-> - (closed-value-new-block page-id (or block-uuid (d/squuid)) block-value property) + (closed-value-new-block page-id (or block-uuid (d/squuid)) block-value property) icon (assoc :block/properties {icon-id icon}) diff --git a/deps/db/src/logseq/db/sqlite/create_graph.cljs b/deps/db/src/logseq/db/sqlite/create_graph.cljs index 0f3c1b98f7..a32e928490 100644 --- a/deps/db/src/logseq/db/sqlite/create_graph.cljs +++ b/deps/db/src/logseq/db/sqlite/create_graph.cljs @@ -4,7 +4,8 @@ [logseq.db.frontend.schema :as db-schema] [logseq.db.frontend.property :as db-property] [logseq.db.frontend.property.util :as db-property-util] - [datascript.core :as d])) + [datascript.core :as d] + [logseq.db :as ldb])) (defn build-db-initial-data [config-content] @@ -22,6 +23,7 @@ :file/path (str "logseq/" "custom.js") :file/content "" :file/last-modified-at (js/Date.)}] + default-pages (ldb/build-default-pages-tx) default-properties (mapcat (fn [[k-keyword {:keys [schema original-name closed-values]}]] (let [k-name (name k-keyword)] @@ -35,5 +37,6 @@ :block/original-name (or original-name k-name) :block/name (sqlite-util/sanitize-page-name k-name) :block/uuid (d/squuid)})]))) - db-property/built-in-properties)] - (concat initial-data initial-files default-properties))) \ No newline at end of file + db-property/built-in-properties) + ] + (concat initial-data initial-files default-pages default-properties))) diff --git a/src/main/frontend/db/conn.cljs b/src/main/frontend/db/conn.cljs index 397a8bf5d1..c410988ce2 100644 --- a/src/main/frontend/db/conn.cljs +++ b/src/main/frontend/db/conn.cljs @@ -90,16 +90,12 @@ (defn start! ([repo] (start! repo {})) - ([repo {:keys [listen-handler db-graph?]}] + ([repo {:keys [listen-handler]}] (let [db-name (datascript-db repo) db-conn (ldb/start-conn :schema (get-schema repo) :create-default-pages? false)] (swap! conns assoc db-name db-conn) (when listen-handler - (listen-handler repo)) - (when db-graph? - (transact! db-name [(kv :db/type "db")]) - (transact! db-name [(kv :schema/version db-schema/version)])) - (ldb/create-default-pages! db-conn {:db-graph? db-graph?})))) + (listen-handler repo))))) (defn destroy-all! [] diff --git a/src/main/frontend/handler/db_based/property.cljs b/src/main/frontend/handler/db_based/property.cljs index 5cf1a14ca5..df14bb7974 100644 --- a/src/main/frontend/handler/db_based/property.cljs +++ b/src/main/frontend/handler/db_based/property.cljs @@ -738,6 +738,7 @@ page (get-property-hidden-page property) page-tx (when-not (e/entity? page) page) page-id (:block/uuid page) + values' (remove string/blank? values) closed-value-blocks (map (fn [value] (db-property-util/build-closed-value-block (db/new-block-id) @@ -745,7 +746,7 @@ [:block/uuid page-id] property {})) - (remove string/blank? values)) + values') value->block-id (zipmap (map #(get-in % [:block/schema :value]) closed-value-blocks) (map :block/uuid closed-value-blocks)) diff --git a/src/main/frontend/handler/draw.cljs b/src/main/frontend/handler/draw.cljs index 0d42a42e16..05cc5deb20 100644 --- a/src/main/frontend/handler/draw.cljs +++ b/src/main/frontend/handler/draw.cljs @@ -29,7 +29,6 @@ (-> (p/do! (create-draws-directory! repo) - (fs/write-file! repo repo-dir path data nil) (db/transact! repo [{:file/path path :block/name (util/page-name-sanity-lc file) diff --git a/src/main/frontend/worker/db/fix.cljs b/src/main/frontend/worker/db/fix.cljs index 9996686721..ef9601e512 100644 --- a/src/main/frontend/worker/db/fix.cljs +++ b/src/main/frontend/worker/db/fix.cljs @@ -158,15 +158,18 @@ replace-tx? false} :as _opts}] (let [db @conn - transact-opts (if replace-tx? {:replace? true} {}) - *fix-tx-data (atom [])] - (when fix-parent-left? - (loop-fix-conflicts conn page-id transact-opts *fix-tx-data)) - (when fix-broken-chain? - (let [db' @conn - parent-left->es' (build-parent-left->es db page-id) - fix-broken-chain-tx (fix-broken-chain db' parent-left->es')] - (when (seq fix-broken-chain-tx) - (let [tx-data (:tx-data (ldb/transact! conn fix-broken-chain-tx transact-opts))] - (swap! *fix-tx-data (fn [old-data] (concat old-data tx-data))))))) - @*fix-tx-data)) + page (d/entity db page-id)] + (when-not (or (ldb/whiteboard-page? db page) + (ldb/hidden-page? page)) + (let [transact-opts (if replace-tx? {:replace? true} {}) + *fix-tx-data (atom [])] + (when fix-parent-left? + (loop-fix-conflicts conn page-id transact-opts *fix-tx-data)) + (when fix-broken-chain? + (let [db' @conn + parent-left->es' (build-parent-left->es db page-id) + fix-broken-chain-tx (fix-broken-chain db' parent-left->es')] + (when (seq fix-broken-chain-tx) + (let [tx-data (:tx-data (ldb/transact! conn fix-broken-chain-tx transact-opts))] + (swap! *fix-tx-data (fn [old-data] (concat old-data tx-data))))))) + @*fix-tx-data))))