From 5d4ae66d864db228a4bee228a21fcaa49d74f7f4 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Sun, 28 Apr 2024 19:44:53 +0800 Subject: [PATCH] revert: remove :block/properties --- deps/db/src/logseq/db.cljs | 2 +- .../src/logseq/db/frontend/entity_plus.cljc | 22 ++----- .../src/logseq/db/frontend/malli_schema.cljs | 34 +++++----- deps/db/src/logseq/db/frontend/property.cljs | 20 +----- .../logseq/db/frontend/property/build.cljs | 4 +- .../src/logseq/db/frontend/property/type.cljs | 1 + .../src/logseq/db/frontend/property/util.cljs | 2 +- deps/db/src/logseq/db/frontend/schema.cljs | 5 +- deps/db/src/logseq/db/sqlite/common_db.cljs | 62 ++++++++----------- deps/db/src/logseq/db/sqlite/util.cljs | 20 +----- .../src/logseq/graph_parser/whiteboard.cljs | 12 ++-- deps/outliner/src/logseq/outliner/core.cljs | 8 +-- .../logseq/tasks/db_graph/create_graph.cljs | 33 +++++----- src/main/frontend/db_worker.cljs | 3 - src/main/frontend/extensions/slide.cljs | 3 +- .../frontend/handler/db_based/property.cljs | 43 +++++-------- src/main/frontend/handler/whiteboard.cljs | 19 +++--- src/main/frontend/worker/handler/page.cljs | 2 + src/main/frontend/worker/pipeline.cljs | 20 ++---- src/main/frontend/worker/search.cljs | 3 +- 20 files changed, 118 insertions(+), 200 deletions(-) diff --git a/deps/db/src/logseq/db.cljs b/deps/db/src/logseq/db.cljs index a520b5eb67..b70aab2ec6 100644 --- a/deps/db/src/logseq/db.cljs +++ b/deps/db/src/logseq/db.cljs @@ -457,7 +457,7 @@ (defn built-in? "Built-in page or block" [entity] - (db-property/get-property-value entity :logseq.property/built-in?)) + (:logseq.property/built-in? entity)) (defn built-in-class-property? "Whether property a built-in property for the specific class" diff --git a/deps/db/src/logseq/db/frontend/entity_plus.cljc b/deps/db/src/logseq/db/frontend/entity_plus.cljc index 185faefbdb..4e25ce9052 100644 --- a/deps/db/src/logseq/db/frontend/entity_plus.cljc +++ b/deps/db/src/logseq/db/frontend/entity_plus.cljc @@ -25,20 +25,13 @@ :block/raw-content (lookup-entity e :block/content default-value) - :block/raw-properties - (lookup-entity e :block/properties default-value) - :block/properties (let [db (.-db e)] (if (db-based-graph? db) - (let [result (lookup-entity e k default-value)] - (->> - (keep (fn [pair-e] - (when pair-e - (if-let [pid (:db/ident (lookup-entity pair-e :property/pair-property nil))] - {pid (lookup-entity pair-e pid nil)} - (prn "Error: outdated property pair entity should be deleted: " pair-e)))) result) - (into {}))) + (lookup-entity e :block/properties + (->> (into {} e) + (filter (fn [[k _]] (db-property/property? k))) + (into {}))) (lookup-entity e :block/properties nil))) :block/content @@ -53,12 +46,7 @@ default-value))) (or (get (.-kv e) k) - (if (and (not (db-property/db-attribute-properties k)) - (db-property/property? k) - (db-based-graph? (.-db e)) - (not (:property/pair-property e))) ; property pair will be direct access - (k (first (filter #(some? (k %)) (lookup-entity e :block/properties nil)))) - (lookup-entity e k default-value)))))) + (lookup-entity e k default-value))))) #?(:org.babashka/nbb nil diff --git a/deps/db/src/logseq/db/frontend/malli_schema.cljs b/deps/db/src/logseq/db/frontend/malli_schema.cljs index 932657e839..f50c4bd726 100644 --- a/deps/db/src/logseq/db/frontend/malli_schema.cljs +++ b/deps/db/src/logseq/db/frontend/malli_schema.cljs @@ -101,7 +101,7 @@ "Returns entity maps for given :eavt datoms indexed by db/id. Optional keys: * :entity-fn - Optional fn that given an entity id, returns entity. Defaults to just doing a lookup within entity-maps to be as performant as possible" - [datoms & {:keys [entity-fn]}] + [datoms & {:keys [_entity-fn]}] (let [ent-maps (reduce (fn [acc {:keys [a e v]}] (if (contains? db-schema/card-many-attributes a) @@ -114,20 +114,23 @@ (update acc e assoc a v)))) {} datoms) - entity-fn' (or entity-fn #(get ent-maps %))] - (-> ent-maps - (update-vals - (fn [v] - (let [pair-ent (when (:property/pair-property v) (entity-fn' (:property/pair-property v)))] - (if-let [prop-value - (and pair-ent - (= :db.cardinality/many (:db/cardinality pair-ent)) - (get v (:db/ident pair-ent)))] - (if-not (set? prop-value) - ;; Fix :many property values that only had one value - (assoc v (:db/ident pair-ent) #{prop-value}) - v) - v))))))) + ;; entity-fn' (or entity-fn #(get ent-maps %)) + ] + ent-maps + ;; (-> ent-maps + ;; (update-vals + ;; (fn [v] + ;; (let [pair-ent (when (:property/pair-property v) (entity-fn' (:property/pair-property v)))] + ;; (if-let [prop-value + ;; (and pair-ent + ;; (= :db.cardinality/many (:db/cardinality pair-ent)) + ;; (get v (:db/ident pair-ent)))] + ;; (if-not (set? prop-value) + ;; ;; Fix :many property values that only had one value + ;; (assoc v (:db/ident pair-ent) #{prop-value}) + ;; v) + ;; v))))) + )) (defn datoms->entities "Returns a vec of entity maps given :eavt datoms" @@ -145,7 +148,6 @@ [:block/created-at :int] [:block/updated-at :int] [:block/format [:enum :markdown]] - [:block/properties {:optional true} [:set :int]] [:block/refs {:optional true} [:set :int]] [:block/tags {:optional true} [:set :int]] [:block/collapsed-properties {:optional true} [:set :int]] diff --git a/deps/db/src/logseq/db/frontend/property.cljs b/deps/db/src/logseq/db/frontend/property.cljs index 9f8e878276..516e69f1e0 100644 --- a/deps/db/src/logseq/db/frontend/property.cljs +++ b/deps/db/src/logseq/db/frontend/property.cljs @@ -237,26 +237,10 @@ "Returns a block's properties as a map indexed by property's db-ident. Use this in deps because nbb can't use :block/properties from entity-plus" [e] - (->> (:block/properties e) - (map (fn [pair-e] - (let [pid (:db/ident (:property/pair-property pair-e))] - {pid (pair-e pid)}))) + (->> (into {} e) + (filter (fn [[k _]] (property? k))) (into {}))) -(defn get-pair-e - "Fetches a block's property pair entity given a property's db-ident. Iterates over a - block's property pairs until it finds the first match. This is nbb compatible" - [block db-ident] - (first (filter #(= (:db/ident (:property/pair-property %)) db-ident) - (or (:block/raw-properties block) - ;; Fallback for nbb since it can't access :block/raw-properties - (:block/properties block))))) - -(defn get-property-value - "Fetches a block's property value given a property's db-ident" - [block db-ident] - (get (get-pair-e block db-ident) db-ident)) - (defn valid-property-name? [s] {:pre [(string? s)]} diff --git a/deps/db/src/logseq/db/frontend/property/build.cljs b/deps/db/src/logseq/db/frontend/property/build.cljs index b967cbcc11..9725586736 100644 --- a/deps/db/src/logseq/db/frontend/property/build.cljs +++ b/deps/db/src/logseq/db/frontend/property/build.cljs @@ -11,7 +11,7 @@ :block/format :markdown :block/uuid block-id :block/page page-id - :block/properties [(sqlite-util/build-property-pair nil :logseq.property/created-from-property (:db/ident property))] + :logseq.property/created-from-property (:db/ident property) :block/schema {:value value} :block/parent page-id}) @@ -25,7 +25,7 @@ (assoc :db/ident db-ident) icon - (update :block/properties conj (sqlite-util/build-property-pair nil :logseq.property/icon icon)) + (assoc :logseq.property/icon icon) ;; For now, only closed values with :db/ident are built-in? (and db-ident (keyword? db-ident)) diff --git a/deps/db/src/logseq/db/frontend/property/type.cljs b/deps/db/src/logseq/db/frontend/property/type.cljs index 7ce2223449..9babfcf431 100644 --- a/deps/db/src/logseq/db/frontend/property/type.cljs +++ b/deps/db/src/logseq/db/frontend/property/type.cljs @@ -39,6 +39,7 @@ (zipmap closed-value-property-types (repeat #{:values})) (zipmap #{:string :number :url} (repeat #{:position})) {:default #{} + :string #{:cardinality} :number #{:cardinality} :date #{:cardinality} :url #{:cardinality} diff --git a/deps/db/src/logseq/db/frontend/property/util.cljs b/deps/db/src/logseq/db/frontend/property/util.cljs index 828295d124..24ffd9138a 100644 --- a/deps/db/src/logseq/db/frontend/property/util.cljs +++ b/deps/db/src/logseq/db/frontend/property/util.cljs @@ -23,7 +23,7 @@ (when db (let [block (or (d/entity db (:db/id block)) block)] (if (sqlite-util/db-based-graph? repo) - (db-property/get-property-value block db-ident) + (get block db-ident) (lookup repo (:block/properties block) db-ident))))) (defn shape-block? diff --git a/deps/db/src/logseq/db/frontend/schema.cljs b/deps/db/src/logseq/db/frontend/schema.cljs index c431cbdd45..73cf2d6a05 100644 --- a/deps/db/src/logseq/db/frontend/schema.cljs +++ b/deps/db/src/logseq/db/frontend/schema.cljs @@ -121,11 +121,8 @@ (merge (dissoc schema :block/namespace :block/properties-text-values :block/pre-block? :recent/pages :file/handle :block/file - :block/properties-order) + :block/properties :block/properties-order) {:block/name {:db/index true} ; remove db/unique for :block/name - :block/properties {:db/valueType :db.type/ref - :db/cardinality :db.cardinality/many} - :property/pair-property {:db/valueType :db.type/ref} ;; class properties :class/parent {:db/valueType :db.type/ref :db/index true} diff --git a/deps/db/src/logseq/db/sqlite/common_db.cljs b/deps/db/src/logseq/db/sqlite/common_db.cljs index efcca0fb21..68670da4f5 100644 --- a/deps/db/src/logseq/db/sqlite/common_db.cljs +++ b/deps/db/src/logseq/db/sqlite/common_db.cljs @@ -89,42 +89,32 @@ [db block] (when (entity-plus/db-based-graph? db) (let [block (d/entity db (:db/id block)) - block-properties (when (seq (:block/raw-properties block)) - (let [pairs (d/pull-many db '[*] (map :db/id (:block/raw-properties block)))] - (mapcat - (fn [pair] - (let [property (d/entity db (:db/id (:property/pair-property pair))) - property-values (get pair (:db/ident property)) - values (if (and (coll? property-values) - (map? (first property-values))) - property-values - #{property-values}) - value-ids (when (every? map? values) - (->> (map :db/id values) - (filter (fn [id] (or (int? id) (keyword? id)))))) - value-blocks (->> - (when (seq value-ids) - (mapcat - (fn [id] - (let [b (d/entity db id)] - (cons (d/pull db '[*] id) - (let [ids (map :db/id (:block/raw-properties b))] - (when (seq ids) - (d/pull-many db '[*] ids)))))) - value-ids)) + block-properties (when (seq (:block/properties block)) + (mapcat + (fn [[_property-id property-values]] + (let [values (if (and (coll? property-values) + (map? (first property-values))) + property-values + #{property-values}) + value-ids (when (every? map? values) + (->> (map :db/id values) + (filter (fn [id] (or (int? id) (keyword? id)))))) + value-blocks (->> + (when (seq value-ids) + (map + (fn [id] (d/pull db '[*] id)) + value-ids)) ;; FIXME: why d/pull returns {:db/id db-ident} instead of {:db/id number-eid}? - (map (fn [block] - (let [from-property-id (get-in block [:logseq.property/created-from-property :db/id])] - (if (keyword? from-property-id) - (assoc-in block [:logseq.property/created-from-property :db/id] (:db/id (d/entity db from-property-id))) - block))))) - page (when (seq values) - (when-let [page-id (:db/id (:block/page (d/entity db (:db/id (first values)))))] - (d/pull db '[*] page-id)))] - (remove nil? (concat [page] - value-blocks - [pair])))) - pairs)))] + (map (fn [block] + (let [from-property-id (get-in block [:logseq.property/created-from-property :db/id])] + (if (keyword? from-property-id) + (assoc-in block [:logseq.property/created-from-property :db/id] (:db/id (d/entity db from-property-id))) + block))))) + page (when (seq values) + (when-let [page-id (:db/id (:block/page (d/entity db (:db/id (first values)))))] + (d/pull db '[*] page-id)))] + (remove nil? (concat [page] value-blocks)))) + (:block/properties block)))] block-properties))) (defn get-block-children-ids @@ -171,7 +161,7 @@ (mapcat (fn [block] (let [e (d/entity db (:db/id block))] (conj - (if (seq (:block/raw-properties e)) + (if (seq (:block/properties e)) (vec (property-with-values db e)) []) block))))))))] diff --git a/deps/db/src/logseq/db/sqlite/util.cljs b/deps/db/src/logseq/db/sqlite/util.cljs index ec9035ced3..d4a07ad0b0 100644 --- a/deps/db/src/logseq/db/sqlite/util.cljs +++ b/deps/db/src/logseq/db/sqlite/util.cljs @@ -117,25 +117,7 @@ (and (:block/name block) (nil? (:block/page block)))) -(defn build-property-pair - [block db-ident value] - (assert (or (de/entity? block) (nil? block)) "build-property-pair `block` should be a db entity or nil") - (if-let [pair (when block (db-property/get-pair-e block db-ident))] - {:db/id (:db/id pair) - db-ident value - :block/updated-at (common-util/time-ms)} - (block-with-timestamps - {:property/pair-property {:db/ident db-ident} - db-ident value}))) - -(defn build-properties - [block properties-map] - (assert (or (de/entity? block) (nil? block)) "build-property-pair `block` should be a db entity or nil") - (mapv (fn [[db-ident value]] (build-property-pair block db-ident value)) properties-map)) - (defn mark-block-as-built-in "Marks built-in blocks as built-in? including pages, classes, properties and closed values" [block] - (update block :block/properties conj - (let [e (when (de/entity? block) block)] - (build-property-pair e :logseq.property/built-in? true)))) + (assoc block :logseq.property/built-in? true)) diff --git a/deps/graph-parser/src/logseq/graph_parser/whiteboard.cljs b/deps/graph-parser/src/logseq/graph_parser/whiteboard.cljs index 00d9ae4f3e..751742df73 100644 --- a/deps/graph-parser/src/logseq/graph_parser/whiteboard.cljs +++ b/deps/graph-parser/src/logseq/graph_parser/whiteboard.cljs @@ -82,15 +82,13 @@ (defn shape->block [repo db shape page-id] (let [block-uuid (if (uuid? (:id shape)) (:id shape) (uuid (:id shape))) - block (when block-uuid (d/entity db [:block/uuid block-uuid])) - properties-map {(db-property-util/get-pid repo :logseq.property/ls-type) :whiteboard-shape - (db-property-util/get-pid repo :logseq.property.tldraw/shape) shape} - properties (if (sqlite-util/db-based-graph? repo) - (sqlite-util/build-properties block properties-map) - properties-map) + properties {(db-property-util/get-pid repo :logseq.property/ls-type) :whiteboard-shape + (db-property-util/get-pid repo :logseq.property.tldraw/shape) shape} block {:block/uuid block-uuid :block/page page-id :block/parent page-id} - block' (assoc block :block/properties properties) + block' (if (sqlite-util/db-based-graph? repo) + (merge block properties) + (assoc block :block/properties properties)) additional-props (with-whiteboard-block-props block' page-id)] (merge block' additional-props))) diff --git a/deps/outliner/src/logseq/outliner/core.cljs b/deps/outliner/src/logseq/outliner/core.cljs index 46300e25a6..f6e6dc9e8a 100644 --- a/deps/outliner/src/logseq/outliner/core.cljs +++ b/deps/outliner/src/logseq/outliner/core.cljs @@ -321,11 +321,9 @@ value (get-in value-e [:block/schema :value])] (when (= (string/lower-case marker) (string/lower-case value)) (:db/id value-e)))))))] - (when-let [pair (and marker (db-property/get-pair-e block-entity :logseq.task/status))] - (swap! txs-state into [[:db/retractEntity (:db/id pair)]])) (cond-> m matched-status-id - (update :block/properties conj (sqlite-util/build-property-pair block-entity (:db/ident property) matched-status-id)) + (assoc (:db/ident property) matched-status-id) matched-status-id (update :block/content (fn [content] @@ -652,7 +650,7 @@ list? ((fn [b] (if db-based? - (update b :block/properties conj (sqlite-util/build-property-pair block :logseq.property/order-list-type list-type)) + (assoc b :logseq.property/order-list-type list-type) (update b :block/properties assoc (db-property-util/get-pid repo :logseq.property/order-list-type) list-type)))) (not db-based?) @@ -954,7 +952,7 @@ non-consecutive-blocks)))) page-blocks) (remove nil?))))) -(defn- delete-block +(defn delete-block [repo conn txs-state node {:keys [date-formatter]}] (let [right-node (otree/-get-right node conn)] (otree/-del node txs-state conn) diff --git a/scripts/src/logseq/tasks/db_graph/create_graph.cljs b/scripts/src/logseq/tasks/db_graph/create_graph.cljs index ab9cd2d5b9..31688d5bd8 100644 --- a/scripts/src/logseq/tasks/db_graph/create_graph.cljs +++ b/scripts/src/logseq/tasks/db_graph/create_graph.cljs @@ -72,17 +72,17 @@ (or (get all-idents kw) (throw (ex-info (str "No ident found for " kw) {})))) -(defn- ->block-properties-tx [properties uuid-maps all-idents] - (mapv - (fn [[prop-name val]] - (sqlite-util/build-property-pair - nil - (get-ident all-idents prop-name) - ;; set indicates a :many value - (if (set? val) - (set (map #(translate-property-value % uuid-maps) val)) - (translate-property-value val uuid-maps)))) - properties)) +(defn- ->block-properties [properties uuid-maps all-idents] + (->> + (map + (fn [[prop-name val]] + [(get-ident all-idents prop-name) + ;; set indicates a :many value + (if (set? val) + (set (map #(translate-property-value % uuid-maps) val)) + (translate-property-value val uuid-maps))]) + properties) + (into {}))) (defn- create-uuid-maps "Creates maps of unique page names, block contents and property names to their uuids" @@ -119,8 +119,8 @@ :block/left {:db/id (if last-block (block-id-fn last-block) page-id)} :block/parent {:db/id page-id}}) (when (seq (:properties m)) - {:block/properties (->block-properties-tx (:properties m) uuid-maps all-idents) - :block/refs (build-property-refs (:properties m) all-idents)}))) + (merge (->block-properties (:properties m) uuid-maps all-idents) + {:block/refs (build-property-refs (:properties m) all-idents)})))) (defn- build-properties-tx [properties uuid-maps all-idents] (let [property-db-ids (->> (keys properties) @@ -145,8 +145,9 @@ {:db/id (or (property-db-ids (name prop-name)) (throw (ex-info "No :db/id for property" {:property prop-name})))} (when-let [props (not-empty (:properties prop-m))] - {:block/properties (->block-properties-tx props uuid-maps all-idents) - :block/refs (build-property-refs props all-idents)}))])) + (merge + (->block-properties props uuid-maps all-idents) + {:block/refs (build-property-refs props all-idents)})))])) properties))] new-properties-tx)) @@ -235,7 +236,7 @@ new-page (dissoc page :properties) (when (seq (:properties page)) - {:block/properties (->block-properties-tx (:properties page) uuid-maps all-idents)}) + (->block-properties (:properties page) uuid-maps all-idents)) (when (seq (:properties page)) {:block/refs (build-property-refs (:properties page) all-idents) ;; app doesn't do this yet but it should to link property to page diff --git a/src/main/frontend/db_worker.cljs b/src/main/frontend/db_worker.cljs index f1fd8a9e71..87084e5d9e 100644 --- a/src/main/frontend/db_worker.cljs +++ b/src/main/frontend/db_worker.cljs @@ -6,7 +6,6 @@ [cljs.core.async :as async] [clojure.edn :as edn] [clojure.string :as string] - [cognitect.transit :as transit] [datascript.core :as d] [datascript.storage :refer [IStorage]] [frontend.worker.async-util :include-macros true :refer [ (outliner-core/block-with-updated-at {:db/id (:db/id block)}) - status? + (let [block (assoc (outliner-core/block-with-updated-at {:db/id (:db/id block)}) + property-id value) + block-tx-data (cond-> block + status? (assoc :block/tags :logseq.class/task))] - [property-tx-data block-tx-data])))) + [block-tx-data])))) (defn- get-property-value-schema "Gets a malli schema to validate the property value for the given property type and builds @@ -203,10 +203,7 @@ (notification/show! msg' :warning)) (do (upsert-property! repo property-id (assoc property-schema :type property-type) {}) - (let [pair-id (:db/id (db-property/get-pair-e block property-id)) - tx-data (concat - (when pair-id [[:db/retract pair-id property-id]]) - (build-property-value-tx-data block property-id values' false))] + (let [tx-data (build-property-value-tx-data block property-id values' false)] (db/transact! repo tx-data {:outliner-op :save-block}))))))))) (defn- resolve-tag @@ -260,7 +257,8 @@ (when (some? v'') (let [infer-schema (when-not type (infer-schema-from-input-string v'')) property-type' (or type property-type infer-schema :default) - schema (get-property-value-schema property-type' property) + schema (get-property-value-schema property-type' (or property + {:block/schema {:type property-type'}})) existing-value (when-let [id (:db/ident property)] (get block id)) new-value* (if (= v'' :logseq.property/empty-placeholder) @@ -379,11 +377,9 @@ txs-state (outliner-core/->Block property-block) {:children? true}) - @txs-state)) - pair-id (:db/id (db-property/get-pair-e block property-id))] + @txs-state))] (concat - (when pair-id - [[:db/retractEntity pair-id]]) + [[:db/retract eid (:db/ident property)]] retract-blocks-tx)))) block-eids)] (when (seq txs) @@ -490,13 +486,10 @@ (-> (block/page-name->map page-name true) (assoc :block/type #{"hidden"} :block/format :markdown - :block/properties - (sqlite-util/build-property-pair nil :logseq.property/source-page (:db/id property))))) + :logseq.property/source-page (:db/id property)))) page-tx (when-not page-entity page) page-id [:block/uuid (:block/uuid page)] parent-id (db/new-block-id) - from-block-pair (when (:db/id block) (sqlite-util/build-property-pair block :logseq.property/created-from-block (:db/id block))) - from-property-pair (when (:db/id property) (sqlite-util/build-property-pair block :logseq.property/created-from-property (:db/id property))) parent (-> {:block/uuid parent-id :block/format :markdown :block/content "" @@ -504,7 +497,8 @@ :block/parent page-id :block/left (or (when page-entity (model/get-block-last-direct-child-id (db/get-db) (:db/id page-entity))) page-id) - :block/properties (remove nil? [from-block-pair from-property-pair])} + :logseq.property/created-from-block (:db/id block) + :logseq.property/created-from-property (:db/id property)} sqlite-util/block-with-timestamps) child-1-id (db/new-block-id) child-1 (-> {:block/uuid child-1-id @@ -545,8 +539,7 @@ (-> (block/page-name->map page-name true) (assoc :block/type #{"hidden"} :block/format :markdown - :block/properties - (sqlite-util/build-property-pair nil :logseq.property/source-page (:db/id property))))) + :logseq.property/source-page (:db/id property)))) page-tx (when-not page-entity page) page-id [:block/uuid (:block/uuid page)] block-id (db/new-block-id) @@ -558,11 +551,9 @@ :block/parent page-id :block/left (or (when page-entity (model/get-block-last-direct-child-id (db/get-db) (:db/id page-entity))) page-id) - :block/properties - (sqlite-util/build-properties nil - {:logseq.property/created-from-block [:block/uuid (:block/uuid block)] - :logseq.property/created-from-property (:db/id property) - :logseq.property/created-from-template [:block/uuid (:block/uuid template)]})} + :logseq.property/created-from-block [:block/uuid (:block/uuid block)] + :logseq.property/created-from-property (:db/id property) + :logseq.property/created-from-template [:block/uuid (:block/uuid template)]} sqlite-util/block-with-timestamps)] {:page page-tx :blocks [new-block]})) diff --git a/src/main/frontend/handler/whiteboard.cljs b/src/main/frontend/handler/whiteboard.cljs index a005e1e507..b7c89f5760 100644 --- a/src/main/frontend/handler/whiteboard.cljs +++ b/src/main/frontend/handler/whiteboard.cljs @@ -68,9 +68,8 @@ :block/name (util/page-name-sanity-lc page-name) :block/type "whiteboard" :block/format :markdown - :block/properties (sqlite-util/build-properties page-entity - {:logseq.property/ls-type :whiteboard-page - :logseq.property.tldraw/page tldraw-page}) + :logseq.property/ls-type :whiteboard-page + :logseq.property.tldraw/page tldraw-page :block/updated-at (util/time-ms) :block/created-at (or (:block/created-at page-entity) (util/time-ms))})) @@ -203,19 +202,19 @@ :bindings {}, :nonce 1, :assets []} - properties-map {(pu/get-pid :logseq.property/ls-type) :whiteboard-page, - (pu/get-pid :logseq.property.tldraw/page) tldraw-page} - properties (if db-based? - (sqlite-util/build-properties nil properties-map) - properties-map) + properties {(pu/get-pid :logseq.property/ls-type) :whiteboard-page, + (pu/get-pid :logseq.property.tldraw/page) tldraw-page} m #:block{:uuid id :name (util/page-name-sanity-lc page-name), :original-name page-name :type "whiteboard", :format :markdown :updated-at (util/time-ms), - :created-at (util/time-ms)}] - [(assoc m :block/properties properties)])) + :created-at (util/time-ms)} + m' (if db-based? + (merge m properties) + (assoc m :block/properties properties))] + [m'])) (defn page repo page) [[:db.fn/retractEntity (:db/id page)]]) + + ;; TODO: is this still needed? delete-property-pairs-tx (when property? (map (fn [d] [:db.fn/retractEntity (:e d)]) (d/datoms db :avet (:db/ident page)))) tx-data (concat truncate-blocks-tx-data diff --git a/src/main/frontend/worker/pipeline.cljs b/src/main/frontend/worker/pipeline.cljs index 099ceab60b..750a258deb 100644 --- a/src/main/frontend/worker/pipeline.cljs +++ b/src/main/frontend/worker/pipeline.cljs @@ -10,7 +10,6 @@ [logseq.db.sqlite.util :as sqlite-util] [logseq.outliner.datascript-report :as ds-report] [logseq.outliner.pipeline :as outliner-pipeline] - [logseq.db.frontend.property :as db-property] [logseq.outliner.core :as outliner-core])) (defn- path-refs-need-recalculated? @@ -42,19 +41,11 @@ (mapcat (fn [b] (let [created-from-block (get b :logseq.property/created-from-block) created-from-property (get b :logseq.property/created-from-property) - created-block (d/entity after-db (:db/id created-from-block)) - pair-e (db-property/get-pair-e created-from-block (:db/ident created-from-property)) - tx-id (get-in tx-report [:tempids :db/current-tx])] + created-block (d/entity after-db (:db/id created-from-block))] (when (and created-block created-from-property) [[:db/retractEntity (:db/id b)] - (when pair-e - (outliner-core/block-with-updated-at - {:db/id (:db/id pair-e) - :block/tx-id tx-id})) - (when pair-e - (outliner-core/block-with-updated-at - {:db/id (:db/id created-block) - :block/tx-id tx-id}))]))) + (outliner-core/block-with-updated-at + {:db/id (:db/id created-block)})]))) empty-property-parents) (remove nil?))))) @@ -127,9 +118,8 @@ tx-id (get-in tx-report [:tempids :db/current-tx])] (keep (fn [b] (when-let [db-id (:db/id b)] - (when-not (:property/pair-property b) - {:db/id db-id - :block/tx-id tx-id}))) updated-blocks))) + {:db/id db-id + :block/tx-id tx-id})) updated-blocks))) tx-report' (or (when (seq replace-tx) ;; TODO: remove this since transact! is really slow diff --git a/src/main/frontend/worker/search.cljs b/src/main/frontend/worker/search.cljs index 01f90df012..37df54e535 100644 --- a/src/main/frontend/worker/search.cljs +++ b/src/main/frontend/worker/search.cljs @@ -10,8 +10,7 @@ [frontend.worker.util :as worker-util] [logseq.db.sqlite.util :as sqlite-util] [logseq.common.util :as common-util] - [logseq.db :as ldb] - [cljs-bean.core :as bean])) + [logseq.db :as ldb])) ;; TODO: use sqlite for fuzzy search (defonce indices (atom nil))