|
|
@@ -17,7 +17,8 @@
|
|
|
[logseq.common.config :as common-config]
|
|
|
[logseq.db :as ldb]
|
|
|
[logseq.outliner.db-pipeline :as db-pipeline]
|
|
|
- [logseq.db.test.helper :as db-test]))
|
|
|
+ [logseq.db.test.helper :as db-test]
|
|
|
+ [logseq.db.frontend.rules :as rules]))
|
|
|
|
|
|
;; Helpers
|
|
|
;; =======
|
|
|
@@ -40,6 +41,13 @@
|
|
|
db)
|
|
|
first)))
|
|
|
|
|
|
+(defn- find-block-by-property [db property property-value]
|
|
|
+ (->> (d/q '[:find [(pull ?b [*]) ...]
|
|
|
+ :in $ ?prop ?prop-value %
|
|
|
+ :where (property ?b ?prop ?prop-value)]
|
|
|
+ db property property-value (rules/extract-rules rules/db-query-dsl-rules [:property]))
|
|
|
+ first))
|
|
|
+
|
|
|
(defn- find-page-by-name [db name]
|
|
|
(->> name
|
|
|
(d/q '[:find [(pull ?b [*]) ...]
|
|
|
@@ -124,13 +132,13 @@
|
|
|
(if (boolean? v)
|
|
|
[k v]
|
|
|
[k
|
|
|
- (if-let [built-in-type (get-in db-property/built-in-properties [k :schema :type])]
|
|
|
- (if (= :block/tags k)
|
|
|
- (mapv #(:db/ident (d/entity db (:db/id %))) v)
|
|
|
- (if (db-property-type/all-ref-property-types built-in-type)
|
|
|
- (db-property/ref->property-value-contents db v)
|
|
|
- v))
|
|
|
- (db-property/ref->property-value-contents db v))])))
|
|
|
+ (if-let [built-in-type (get-in db-property/built-in-properties [k :schema :type])]
|
|
|
+ (if (= :block/tags k)
|
|
|
+ (mapv #(:db/ident (d/entity db (:db/id %))) v)
|
|
|
+ (if (db-property-type/all-ref-property-types built-in-type)
|
|
|
+ (db-property/ref->property-value-contents db v)
|
|
|
+ v))
|
|
|
+ (db-property/ref->property-value-contents db v))])))
|
|
|
(into {})))
|
|
|
|
|
|
;; Tests
|
|
|
@@ -289,8 +297,9 @@
|
|
|
(is (= {:logseq.property.table/sorting [{:id :user.property/prop-num, :asc? false}]
|
|
|
:logseq.property.view/type "Table View"
|
|
|
:logseq.property.table/ordered-columns [:block/title :user.property/prop-string :user.property/prop-num]
|
|
|
+ :logseq.property/query "(property :prop-string)"
|
|
|
:block/tags [:logseq.class/Query]}
|
|
|
- (readable-properties @conn (find-block-by-content @conn "{{query (property :prop-string)}}")))
|
|
|
+ (readable-properties @conn (find-block-by-property @conn :logseq.property/query "(property :prop-string)")))
|
|
|
"query block has correct query properties"))
|
|
|
|
|
|
(testing "db attributes"
|