mirror of
https://github.com/logseq/logseq.git
synced 2026-04-24 14:14:55 +00:00
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
This commit is contained in:
2
deps/db/bb.edn
vendored
2
deps/db/bb.edn
vendored
@@ -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
|
||||
|
||||
4
deps/db/src/logseq/db/common/view.cljs
vendored
4
deps/db/src/logseq/db/common/view.cljs
vendored
@@ -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))))
|
||||
|
||||
18
deps/db/src/logseq/db/frontend/rules.cljc
vendored
18
deps/db/src/logseq/db/frontend/rules.cljc
vendored
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user