enhance: Add default namespace of :logseq.property

for db/ident of built-in-properties. Namespacing block identities will
be important for future features. Adding namespacing also fixed some
hidden coupling between identity and name. Also converted a couple more
related :block/name queries to use :db/ident to slowly get us closer to
named blocks
pull/11055/head
Gabriel Horner 2024-03-15 18:31:07 -04:00
parent 4652410dfb
commit 67a7a0a3e9
16 changed files with 34 additions and 36 deletions

View File

@ -10,7 +10,6 @@
[clojure.set :as set]
[logseq.db.frontend.rules :as rules]
[logseq.db.frontend.entity-plus]
[logseq.db.frontend.class :as db-class]
[logseq.db.sqlite.util :as sqlite-util]))
;; Use it as an input argument for datalog queries
@ -553,7 +552,7 @@
(defn built-in?
"Built-in page or block"
[db entity]
(get (:block/properties entity) (:block/uuid (d/entity db :built-in?))))
(get (:block/properties entity) (:block/uuid (d/entity db :logseq.property/built-in?))))
(defn built-in-class-property?
"Whether property a built-in property for the specific class"

View File

@ -29,5 +29,5 @@
(defn mark-block-as-built-in
"Marks built-in blocks as built-in? including pages, classes, properties and closed values"
[db block]
(let [built-in-property-id (:block/uuid (d/entity db :built-in?))]
(let [built-in-property-id (:block/uuid (d/entity db :logseq.property/built-in?))]
(update block :block/properties assoc built-in-property-id true)))

View File

@ -21,8 +21,7 @@
:visible true
:schema {:type :page
:cardinality :many}}
:tags {:db-ident :tags
:original-name "Tags"
:tags {:original-name "Tags"
:attribute :block/tags
:visible true
:schema {:type :page

View File

@ -13,7 +13,7 @@
:block/format :markdown
:block/uuid block-id
:block/page page-id
:block/properties {(:block/uuid (d/entity db :created-from-property)) (:block/uuid property)}
:block/properties {(:block/uuid (d/entity db :logseq.property/created-from-property)) (:block/uuid property)}
:block/schema {:value value}
:block/parent page-id})

View File

@ -117,7 +117,7 @@
(defn get-structured-blocks
[db]
(let [special-pages (map #(d/pull db '[*] [:block/name %]) #{"tags"})
(let [special-pages (map #(d/pull db '[*] %) #{:logseq.property/tags})
structured-blocks (->> (d/datoms db :avet :block/type)
(keep (fn [e]
(when (contains? #{"closed value" "property" "class"} (:v e))

View File

@ -17,14 +17,14 @@
built-in-properties (->>
(map (fn [[k v]]
(assert (keyword? k))
[k (assoc v :db-ident (get v :db-ident k))])
[k (assoc v :db-ident (get v :db-ident (keyword "logseq.property" (name k))))])
db-property/built-in-properties)
(into {}))]
(mapcat
(fn [[k-keyword {:keys [schema original-name closed-values db-ident]}]]
(let [k-name (name k-keyword)
id (if (contains? db-property/first-stage-properties k-keyword)
(let [id (:block/uuid (d/entity db k-keyword))]
(let [id (:block/uuid (d/entity db db-ident))]
(assert (uuid? id) "First stage properties are not created yet")
id)
(d/squuid))
@ -47,7 +47,7 @@
[db* config-content]
(let [db (d/db-with db*
(map (fn [p]
{:db/ident p
{:db/ident (keyword "logseq.property" (name p))
:block/name (name p)
:block/uuid (random-uuid)}) db-property/first-stage-properties))
initial-data [{:db/ident :db/type :db/type "db"}

View File

@ -811,7 +811,7 @@
:filename-format (or (:file/name-format config) :legacy)
:verbose (:verbose options)}
:user-options (select-keys options [:tag-classes :property-classes])
:page-tags-uuid (:block/uuid (d/entity @conn [:block/name "pagetags"]))
:page-tags-uuid (:block/uuid (d/entity @conn :logseq.property/pagetags))
:import-state (new-import-state)
:macros (or (:macros options) (:macros config))}
(merge (select-keys options [:set-ui-state :export-file :notify-user]))))

View File

@ -230,7 +230,7 @@
(uuid? v)
(when-let [entity (d/entity db [:block/uuid v])]
(let [from-property? (get-in entity [:block/properties (:block/uuid (d/entity db :created-from-property))])]
(let [from-property? (get-in entity [:block/properties (:block/uuid (d/entity db :logseq.property/created-from-property))])]
(if (and from-property? (not (contains? (:block/type entity) "closed value")))
;; don't reference hidden block property values except closed values
[]

View File

@ -55,7 +55,7 @@
tag-pages (concat tag-pages*
;; built-in property needs to be public to display tags
(when (seq tag-pages*)
(some-> (d/entity db [:block/name "tags"]) :db/id vector)))
(some-> (d/entity db :logseq.property/tags) :db/id vector)))
property-pages (mapcat (fn [ent]
(let [props (:block/properties ent)]
(->> (keys props)

View File

@ -3638,7 +3638,7 @@
[page]
(or
(when-let [page-uuid (get-in (db/entity (:db/id page))
[:block/properties (:block/uuid (db/entity :source-page-id))])]
[:block/properties (:block/uuid (db/entity :logseq.property/source-page-id))])]
(db/entity [:block/uuid page-uuid]))
;; FIXME: what if the source page has been deleted?

View File

@ -30,7 +30,7 @@
has-viewable-properties? (db-property-handler/block-has-viewable-properties? page)
has-class-properties? (seq (:properties (:block/schema page)))
has-tags? (seq (:block/tags page))
hide-properties? (get-in page [:block/properties (:block/uuid (db/entity :hide-properties?))])]
hide-properties? (get-in page [:block/properties (:block/uuid (db/entity :logseq.property/hide-properties?))])]
(when (or configure?
(and
(not hide-properties?)

View File

@ -155,7 +155,7 @@
[_ page inline-class] (or (seq (map string/trim (re-find #"(.*)#(.*)$" page*)))
[nil page* nil])
id (pu/get-page-uuid page)
class? (= (:block/name property) "tags")]
class? (= :logseq.property/tags (:block/ident property))]
(if (nil? id)
(let [inline-class-uuid
(when inline-class
@ -207,13 +207,13 @@
[property
{:keys [block classes multiple-choices? dropdown? input-opts on-chosen] :as opts}]
(let [repo (state/get-current-repo)
tags? (= :tags (:db/ident property))
alias? (= :alias (:db/ident property))
tags? (= :logseq.property/tags (:db/ident property))
alias? (= :logseq.property/alias (:db/ident property))
tags-or-alias? (or tags? alias?)
selected-choices (when block
(->>
(if tags-or-alias?
(->> (if (= "tags" (:block/name property))
(->> (if tags?
(:block/tags block)
(:block/alias block))
(map (fn [e] (:block/original-name e))))
@ -688,7 +688,7 @@
:default)
type (if (= :block type)
(let [v-block (db/entity [:block/uuid value])]
(if (get-in v-block [:block/properties (:block/uuid (db/entity :created-from-template))])
(if (get-in v-block [:block/properties (:block/uuid (db/entity :logseq.property/created-from-template))])
:template
type))
type)

View File

@ -426,8 +426,8 @@
block-value? (and (= :default (get-in property [:block/schema :type] :default))
(uuid? value))
property-block (when block-value? (db/entity [:block/uuid value]))
created-from-block-uuid (:block/uuid (db/entity :created-from-block))
created-from-property-uuid (:block/uuid (db/entity :created-from-property))
created-from-block-uuid (:block/uuid (db/entity :logseq.property/created-from-block))
created-from-property-uuid (:block/uuid (db/entity :logseq.property/created-from-property))
retract-blocks-tx (when (and property-block
(some? (get-in property-block [:block/properties created-from-block-uuid]))
(some? (get-in property-block [:block/properties created-from-property-uuid])))
@ -593,12 +593,12 @@
(-> (block/page-name->map page-name true)
(assoc :block/type #{"hidden"}
:block/format :markdown
:block/properties {(:block/uuid (db/entity :source-page-id)) current-page-id})))
:block/properties {(:block/uuid (db/entity :logseq.property/source-page-id)) current-page-id})))
page-tx (when-not page-entity page)
page-id [:block/uuid (:block/uuid page)]
parent-id (db/new-block-id)
properties {(:block/uuid (db/entity :created-from-block)) (:block/uuid block)
(:block/uuid (db/entity :created-from-property)) (:block/uuid property)}
properties {(:block/uuid (db/entity :logseq.property/created-from-block)) (:block/uuid block)
(:block/uuid (db/entity :logseq.property/created-from-property)) (:block/uuid property)}
parent (-> {:block/uuid parent-id
:block/format :markdown
:block/content ""
@ -645,13 +645,13 @@
(-> (block/page-name->map page-name true)
(assoc :block/type #{"hidden"}
:block/format :markdown
:block/properties {(:block/uuid (db/entity :source-page-id)) current-page-id})))
:block/properties {(:block/uuid (db/entity :logseq.property/source-page-id)) current-page-id})))
page-tx (when-not page-entity page)
page-id [:block/uuid (:block/uuid page)]
block-id (db/new-block-id)
properties {(:block/uuid (db/entity :created-from-block)) (:block/uuid block)
(:block/uuid (db/entity :created-from-property)) (:block/uuid property)
(:block/uuid (db/entity :created-from-template)) (:block/uuid template)}
properties {(:block/uuid (db/entity :logseq.property/created-from-block)) (:block/uuid block)
(:block/uuid (db/entity :logseq.property/created-from-property)) (:block/uuid property)
(:block/uuid (db/entity :logseq.property/created-from-template)) (:block/uuid template)}
new-block (-> {:block/uuid block-id
:block/format :markdown
:block/content ""
@ -835,8 +835,8 @@
[created-from-block created-from-property]
(some (fn [block]
(let [properties (:block/properties block)
from-block (get properties (:block/uuid (db/entity :created-from-block)))
from-property (get properties (:block/uuid (db/entity :created-from-property)))]
from-block (get properties (:block/uuid (db/entity :logseq.property/created-from-block)))
from-property (get properties (:block/uuid (db/entity :logseq.property/created-from-property)))]
(when (and from-block from-property)
[from-block from-property]))) (reverse parents))
from-block (when created-from-block (db/entity [:block/uuid created-from-block]))

View File

@ -431,6 +431,6 @@
(defn toggle-properties!
[page-entity]
(let [properties (:block/properties page-entity)
pid (:block/uuid (db/entity :hide-properties?))]
pid (:block/uuid (db/entity :logseq.property/hide-properties?))]
(db/transact! [{:db/id (:db/id page-entity)
:block/properties (update properties pid not)}])))

View File

@ -28,7 +28,7 @@
(let [after-db (:db-after tx-report)
empty-property-parents (->> (keep (fn [child-id]
(let [e (d/entity (:db-before tx-report) [:block/uuid child-id])]
(when (get-in (:block/parent e) [:block/properties (:block/uuid (d/entity after-db :created-from-property))])
(when (get-in (:block/parent e) [:block/properties (:block/uuid (d/entity after-db :logseq.property/created-from-property))])
(let [parent-now (d/entity after-db (:db/id (:block/parent e)))]
(when (empty? (:block/_parent parent-now))
parent-now))))) deleted-block-uuids)
@ -37,8 +37,8 @@
(->>
(mapcat (fn [b]
(let [properties (:block/properties b)
created-from-block (get properties (:block/uuid (d/entity after-db :created-from-block)))
created-from-property (get properties (:block/uuid (d/entity after-db :created-from-property)))
created-from-block (get properties (:block/uuid (d/entity after-db :logseq.property/created-from-block)))
created-from-property (get properties (:block/uuid (d/entity after-db :logseq.property/created-from-property)))
created-block (d/entity after-db [:block/uuid created-from-block])
properties (assoc (:block/properties created-block) created-from-property "")]
(when (and created-block created-from-property)

View File

@ -208,7 +208,7 @@
(:block/original-name e)
;; block generated by template
(and
(get-in e [:block/properties (:block/uuid (d/entity db :created-from-template))])
(get-in e [:block/properties (:block/uuid (d/entity db :logseq.property/created-from-template))])
(:block/content e))
;; first child
(let [parent-id (:db/id e)]