Просмотр исходного кода

fix: property table and property "All" queries

inconsistently treat empty values as being a property value.  Empty
value directly on a node was treated as a property value but not if the
node obtained the empty property value via a class.
Fixes https://github.com/logseq/db-test/issues/230#issuecomment-2726323364
Gabriel Horner 9 месяцев назад
Родитель
Сommit
79e4f54da8
3 измененных файлов с 11 добавлено и 13 удалено
  1. 1 1
      deps/db/bb.edn
  2. 2 2
      deps/db/src/logseq/db/common/view.cljs
  3. 8 10
      deps/db/src/logseq/db/frontend/rules.cljc

+ 1 - 1
deps/db/bb.edn

@@ -38,7 +38,7 @@
                                                 :property :simple-query-property :private-property
                                                 :property-scalar-default-value
                                                 :property-missing-value
-                                                :has-property-or-default-value)))))}}
+                                                :has-property-or-object-property)))))}}
 
  :tasks/config
  {:large-vars

+ 2 - 2
deps/db/src/logseq/db/common/view.cljs

@@ -414,9 +414,9 @@
         '[:find [?b ...]
           :in $ % ?prop
           :where
-          (has-property-or-default-value? ?b ?prop)]
+          (has-property-or-object-property? ?b ?prop)]
         db
-        (rules/extract-rules rules/db-query-dsl-rules [:has-property-or-default-value]
+        (rules/extract-rules rules/db-query-dsl-rules [:has-property-or-object-property]
                              {:deps rules/rules-dependencies})
         property-ident)
        (keep (fn [id] (non-hidden-e id))))

+ 8 - 10
deps/db/src/logseq/db/frontend/rules.cljc

@@ -138,21 +138,19 @@
        [(= ?t ?tc)]
        (parent ?t ?tc))]
 
-    :has-property-or-default-value
-    '[(has-property-or-default-value? ?b ?prop)
+    :has-property-or-object-property
+    '[(has-property-or-object-property? ?b ?prop)
       [?prop-e :db/ident ?prop]
       (or
        [?b ?prop _]
-       (and (object-has-class-property? ?b ?prop)
-            (or [?prop-e :logseq.property/default-value _]
-                [?prop-e :logseq.property/scalar-default-value _])))]
+       (object-has-class-property? ?b ?prop))]
 
     ;; Checks if a property exists for simple queries. Supports default values
     :has-simple-query-property
     '[(has-simple-query-property ?b ?prop)
       [?prop-e :db/ident ?prop]
       [?prop-e :block/tags :logseq.class/Property]
-      (has-property-or-default-value? ?b ?prop)
+      (has-property-or-object-property? ?b ?prop)
       (or
        [(missing? $ ?prop-e :logseq.property/public?)]
        [?prop-e :logseq.property/public? true])]
@@ -162,7 +160,7 @@
     '[(has-private-simple-query-property ?b ?prop)
       [?prop-e :db/ident ?prop]
       [?prop-e :block/tags :logseq.class/Property]
-      (has-property-or-default-value? ?b ?prop)]
+      (has-property-or-object-property? ?b ?prop)]
 
     ;; Checks if a property exists for any features that are not simple queries
     :has-property
@@ -237,10 +235,10 @@
   {:task #{:simple-query-property}
    :priority #{:simple-query-property}
    :property-missing-value #{:object-has-class-property}
-   :has-property-or-default-value #{:object-has-class-property}
+   :has-property-or-object-property #{:object-has-class-property}
    :object-has-class-property #{:parent}
-   :has-simple-query-property #{:has-property-or-default-value}
-   :has-private-simple-query-property #{:has-property-or-default-value}
+   :has-simple-query-property #{:has-property-or-object-property}
+   :has-private-simple-query-property #{:has-property-or-object-property}
    :property-default-value #{:existing-property-value :property-missing-value}
    :property-scalar-default-value #{:existing-property-value :property-missing-value}
    :property-value #{:property-default-value :property-scalar-default-value}