enhance: remove usages of macro get-all-defined-kw->config

This commit is contained in:
rcmerci
2025-08-26 21:13:39 +08:00
parent c385f361af
commit 92ed692151
5 changed files with 53 additions and 63 deletions

View File

@@ -3,7 +3,6 @@
#?(:cljs (:require-macros [logseq.common.defkeywords])))
(def ^:private *defined-kws (volatile! {}))
(def ^:private *defined-kw->config (volatile! {}))
#_:clj-kondo/ignore
(defmacro defkeyword
@@ -25,16 +24,8 @@
(vswap! *defined-kws assoc kw current-meta)
(throw (ex-info "keyword already defined somewhere else" {:kw kw :info info}))))
(vswap! *defined-kws assoc kw current-meta))
(let [kw->config (partition 2 keyvals)]
(doseq [[kw config] kw->config]
(vswap! *defined-kw->config assoc kw config))))
;; (let [kw->config (partition 2 keyvals)]
;; (doseq [[kw config] kw->config]
;; (vswap! *defined-kw->config assoc kw config)))
)
`(vector ~@keyvals))
(defmacro get-all-defined-kw->config
[]
`'~(deref *defined-kw->config))
(comment
"update anything here to trigger this ns to be recompiled,
so macro get-all-defined-kw->config's result will be updated."
1)

View File

@@ -2,35 +2,38 @@
"kv entities used by logseq db"
(:require [logseq.common.defkeywords :refer [defkeywords]]))
(defkeywords
:logseq.kv/db-type {:doc "Set to \"db\" if it's a db-graph"}
:logseq.kv/graph-uuid {:doc "Store graph-uuid if it's a rtc enabled graph"
:rtc {:rtc/ignore-entity-when-init-upload true
:rtc/ignore-entity-when-init-download true}}
:logseq.kv/import-type {:doc "If graph is imported, identifies how a graph is imported including which UI or CLI import process. CLI scripts can set this to a custom value.
(def kv-entities
(apply
hash-map
(defkeywords
:logseq.kv/db-type {:doc "Set to \"db\" if it's a db-graph"}
:logseq.kv/graph-uuid {:doc "Store graph-uuid if it's a rtc enabled graph"
:rtc {:rtc/ignore-entity-when-init-upload true
:rtc/ignore-entity-when-init-download true}}
:logseq.kv/import-type {:doc "If graph is imported, identifies how a graph is imported including which UI or CLI import process. CLI scripts can set this to a custom value.
UI values include :file-graph and :sqlite-db and CLI values start with :cli e.g. :cli/default."}
:logseq.kv/imported-at {:doc "Time if graph is imported"}
:logseq.kv/graph-local-tx {:doc "local rtc tx-id"
:rtc {:rtc/ignore-entity-when-init-upload true
:rtc/ignore-entity-when-init-download true}}
:logseq.kv/schema-version {:doc "Graph's current schema version"}
:logseq.kv/remote-schema-version {:doc "Graph's remote schema version.
:logseq.kv/imported-at {:doc "Time if graph is imported"}
:logseq.kv/graph-local-tx {:doc "local rtc tx-id"
:rtc {:rtc/ignore-entity-when-init-upload true
:rtc/ignore-entity-when-init-download true}}
:logseq.kv/schema-version {:doc "Graph's current schema version"}
:logseq.kv/remote-schema-version {:doc "Graph's remote schema version.
RTC won't start when major-schema-versions don't match"
:rtc {:rtc/ignore-entity-when-init-upload true
:rtc/ignore-entity-when-init-download true}}
:logseq.kv/graph-created-at {:doc "Graph's created at time"}
:logseq.kv/latest-code-lang {:doc "Latest lang used by a #Code-block"
:rtc {:rtc/ignore-entity-when-init-upload true
:rtc/ignore-entity-when-init-download true}}
:logseq.kv/graph-backup-folder {:doc "Backup folder for automated backup feature"
:rtc {:rtc/ignore-entity-when-init-upload true
:rtc/ignore-entity-when-init-download true}}
:logseq.kv/graph-initial-schema-version {:doc "Graph's schema version when created"}
:rtc {:rtc/ignore-entity-when-init-upload true
:rtc/ignore-entity-when-init-download true}}
:logseq.kv/graph-created-at {:doc "Graph's created at time"}
:logseq.kv/latest-code-lang {:doc "Latest lang used by a #Code-block"
:rtc {:rtc/ignore-entity-when-init-upload true
:rtc/ignore-entity-when-init-download true}}
:logseq.kv/graph-backup-folder {:doc "Backup folder for automated backup feature"
:rtc {:rtc/ignore-entity-when-init-upload true
:rtc/ignore-entity-when-init-download true}}
:logseq.kv/graph-initial-schema-version {:doc "Graph's schema version when created"}
:logseq.kv/graph-last-gc-at {:doc "Last time graph gc at"
:rtc {:rtc/ignore-entity-when-init-upload true
:rtc/ignore-entity-when-init-download true}}
:logseq.kv/graph-last-gc-at {:doc "Last time graph gc at"
:rtc {:rtc/ignore-entity-when-init-upload true
:rtc/ignore-entity-when-init-download true}}
:logseq.kv/graph-text-embedding-model-name {:doc "Graph's text-embedding model name"
:rtc {:rtc/ignore-entity-when-init-upload true
:rtc/ignore-entity-when-init-download true}})
:logseq.kv/graph-text-embedding-model-name {:doc "Graph's text-embedding model name"
:rtc {:rtc/ignore-entity-when-init-upload true
:rtc/ignore-entity-when-init-download true}})))

View File

@@ -9,17 +9,14 @@
[logseq.db.frontend.db-ident :as db-ident]
[logseq.db.frontend.property.type :as db-property-type]))
;; Main property vars
;; ==================
;; Ignore this property when rtc,
;; since users frequently click the sort button to view table content temporarily,
;; but this action does not need to be synchronized with other clients.
(def property-ignore-rtc
(def ^:private property-ignore-rtc
{:rtc/ignore-attr-when-init-upload true
:rtc/ignore-attr-when-init-download true
:rtc/ignore-attr-when-syncing true})
;; Main property vars
;; ==================
(def ^:large-vars/data-var built-in-properties
"Map of built in properties for db graphs with their :db/ident as keys.
Each property has a config map with the following keys:
@@ -209,7 +206,7 @@
{:logseq.property/description "Provides a way for a page to associate to another page i.e. backward compatible tagging."}}
:logseq.property/background-color {:title "Background color"
:schema {:type :default :hide? true}}
;; number (1-6) or boolean for auto heading
;; number (1-6) or boolean for auto heading
:logseq.property/heading {:title "Heading"
:schema {:type :any :hide? true}
:queryable? true}
@@ -222,8 +219,8 @@
:logseq.property/asset {:title "Asset"
:schema {:type :entity
:hide? true}}
;; used by pdf and whiteboard
;; TODO: remove ls-type
;; used by pdf and whiteboard
;; TODO: remove ls-type
:logseq.property/ls-type {:schema {:type :keyword
:hide? true}}
@@ -248,7 +245,7 @@
:schema {:type :entity :hide? true}}
:logseq.property.pdf/hl-value {:title "Annotation data"
:schema {:type :map :hide? true}}
;; FIXME: :logseq.property/order-list-type should updated to closed values
;; FIXME: :logseq.property/order-list-type should updated to closed values
:logseq.property/order-list-type {:title "List type"
:schema {:type :default
:hide? true}}
@@ -268,7 +265,7 @@
:schema {:type :map
:hide? true}}
;; Journal props
;; Journal props
:logseq.property.journal/title-format {:title "Title Format"
:schema
{:type :string
@@ -383,7 +380,7 @@
:schema {:type :property
:hide? true}}
;; TODO: Add more props :Assignee, :Estimate, :Cycle, :Project
;; TODO: Add more props :Assignee, :Estimate, :Cycle, :Project
:logseq.property/icon {:title "Icon"
:schema {:type :map}}

View File

@@ -2,7 +2,4 @@ You're Clojure(script) expert, you're responsible to check those common errors:
- `empty?` should be used instead of `empty` when a boolean value is expected in an expression.
- `logseq.common.defkeywords/defkeywords`:
`defkeywords` is a macro, and cljs vars should not be used in its parameter `keyvals`,
because they cannot be evaluated at compile time

View File

@@ -1,6 +1,8 @@
(ns frontend.worker.rtc.const
"RTC constants"
(:require [logseq.common.defkeywords :as common-def :refer [defkeywords]]))
(:require [logseq.common.defkeywords :as common-def :refer [defkeywords]]
[logseq.db.frontend.kv-entity :as kv-entity]
[logseq.db.frontend.property :as db-property]))
(goog-define RTC-E2E-TEST* false)
(def RTC-E2E-TEST RTC-E2E-TEST*)
@@ -25,24 +27,24 @@
(def ignore-attrs-when-init-upload
(into #{}
(keep (fn [[kw config]] (when (get-in config [:rtc :rtc/ignore-attr-when-init-upload]) kw)))
(common-def/get-all-defined-kw->config)))
db-property/built-in-properties))
(def ignore-attrs-when-init-download
(into #{}
(keep (fn [[kw config]] (when (get-in config [:rtc :rtc/ignore-attr-when-init-download]) kw)))
(common-def/get-all-defined-kw->config)))
db-property/built-in-properties))
(def ignore-attrs-when-syncing
(into #{}
(keep (fn [[kw config]] (when (get-in config [:rtc :rtc/ignore-attr-when-syncing]) kw)))
(common-def/get-all-defined-kw->config)))
db-property/built-in-properties))
(def ignore-entities-when-init-upload
(into #{}
(keep (fn [[kw config]] (when (get-in config [:rtc :rtc/ignore-entity-when-init-upload]) kw)))
(common-def/get-all-defined-kw->config)))
kv-entity/kv-entities))
(def ignore-entities-when-init-download
(into #{}
(keep (fn [[kw config]] (when (get-in config [:rtc :rtc/ignore-entity-when-init-download]) kw)))
(common-def/get-all-defined-kw->config)))
kv-entity/kv-entities))