ソースを参照

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

rcmerci 1 ヶ月 前
コミット
92ed692151

+ 4 - 13
deps/common/src/logseq/common/defkeywords.cljc

@@ -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)

+ 31 - 28
deps/db/src/logseq/db/frontend/kv_entity.cljs

@@ -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}})))

+ 10 - 13
deps/db/src/logseq/db/frontend/property.cljs

@@ -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}}

+ 0 - 3
prompts/review.md

@@ -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
 

+ 8 - 6
src/main/frontend/worker/rtc/const.cljs

@@ -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))