mirror of https://github.com/logseq/logseq
revert: remove :block/properties
parent
d0e2a0991b
commit
5d4ae66d86
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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]]
|
||||
|
|
|
@ -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)]}
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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?
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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))))))))]
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 [<?] :as async-util]
|
||||
|
@ -41,8 +40,6 @@
|
|||
(defonce *opfs-pools worker-state/*opfs-pools)
|
||||
(defonce *publishing? (atom false))
|
||||
|
||||
(defonce transit-w (transit/writer :json))
|
||||
|
||||
(defn- <get-opfs-pool
|
||||
[graph]
|
||||
(when-not @*publishing?
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
[frontend.modules.outliner.tree :as outliner-tree]
|
||||
[frontend.state :as state]
|
||||
[frontend.handler.db-based.property.util :as db-pu]
|
||||
[logseq.db.frontend.property :as db-property]
|
||||
[logseq.db :as ldb]))
|
||||
|
||||
(defn loaded? []
|
||||
|
@ -21,7 +20,7 @@
|
|||
(defn- with-properties
|
||||
[m block]
|
||||
(let [db-based? (config/db-based-graph? (state/get-current-repo))
|
||||
properties (if db-based? (db-property/properties block) (:block/properties block))]
|
||||
properties (:block/properties block)]
|
||||
(if (seq properties)
|
||||
(merge m
|
||||
(update-keys
|
||||
|
|
|
@ -33,12 +33,12 @@
|
|||
(build-property-value-tx-data block property-id value (= property-id :logseq.task/status)))
|
||||
([block property-id value status?]
|
||||
(when (some? value)
|
||||
(let [property-tx-data {:db/id (:db/id block)
|
||||
:block/properties (sqlite-util/build-property-pair block property-id value)}
|
||||
block-tx-data (cond-> (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]}))
|
||||
|
|
|
@ -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 <create-new-whiteboard-page!
|
||||
([]
|
||||
|
|
|
@ -239,6 +239,8 @@
|
|||
[[:db.fn/retractEntity [:file/path file-path]]])
|
||||
delete-page-tx (concat (db-refs->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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
|
|
Loading…
Reference in New Issue