|
|
@@ -5,7 +5,7 @@
|
|
|
[logseq.db.frontend.rules :as rules]
|
|
|
[logseq.db.sqlite.create-graph :as sqlite-create-graph]
|
|
|
[logseq.db.sqlite.util :as sqlite-util]
|
|
|
- [logseq.db :as ldb]))
|
|
|
+ [logseq.db.frontend.property.build :as db-property-build]))
|
|
|
|
|
|
(defn- new-db-conn []
|
|
|
(let [conn (d/create-conn db-schema/schema-for-db-based-graph)
|
|
|
@@ -21,10 +21,15 @@
|
|
|
(deftest has-page-property-rule
|
|
|
(let [conn (new-db-conn)
|
|
|
page (sqlite-util/build-new-page "Page")
|
|
|
- _ (d/transact! conn [(sqlite-util/build-new-property :user.property/foo {:type :string})
|
|
|
- (sqlite-util/build-new-property :user.property/foo2 {:type :string})
|
|
|
- page
|
|
|
- {:block/uuid (:block/uuid page) :user.property/foo "bar"}])]
|
|
|
+ prop-vals-tx-m (db-property-build/build-property-values-tx-m page {:user.property/foo "bar"})
|
|
|
+ _ (d/transact! conn
|
|
|
+ (concat
|
|
|
+ [(sqlite-util/build-new-property :user.property/foo {})
|
|
|
+ (sqlite-util/build-new-property :user.property/foo2 {})
|
|
|
+ page]
|
|
|
+ (vals prop-vals-tx-m)
|
|
|
+ [(merge {:block/uuid (:block/uuid page)}
|
|
|
+ (db-property-build/build-properties-with-ref-values prop-vals-tx-m))]))]
|
|
|
(is (= ["Page"]
|
|
|
(->> (q-with-rules '[:find (pull ?b [:block/original-name]) :where (has-page-property ?b :user.property/foo)]
|
|
|
@conn)
|
|
|
@@ -45,16 +50,22 @@
|
|
|
(let [conn (new-db-conn)
|
|
|
page (sqlite-util/build-new-page "Page")
|
|
|
page-a (sqlite-util/build-new-page "Page A")
|
|
|
- _ (d/transact! conn [(sqlite-util/build-new-property :user.property/foo {:type :string})
|
|
|
- (sqlite-util/build-new-property :user.property/foo2 {:type :string})
|
|
|
- (sqlite-util/build-new-property :user.property/number-many {:type :number :cardinality :many})
|
|
|
- (sqlite-util/build-new-property :user.property/page-many {:type :page :cardinality :many})
|
|
|
- page
|
|
|
- page-a
|
|
|
- {:block/uuid (:block/uuid page) :user.property/foo "bar"}
|
|
|
- {:block/uuid (:block/uuid page) :user.property/number-many #{5 10}}
|
|
|
- {:block/uuid (:block/uuid page) :user.property/page-many #{[:block/uuid (:block/uuid page-a)]}}
|
|
|
- {:block/uuid (:block/uuid page-a) :user.property/foo "bar A"}])]
|
|
|
+ page-prop-vals-tx-m (db-property-build/build-property-values-tx-m page {:user.property/foo "bar" :user.property/number-many #{5 10}})
|
|
|
+ page-a-prop-vals-tx-m (db-property-build/build-property-values-tx-m page-a {:user.property/foo "bar A"})
|
|
|
+ _ (d/transact! conn
|
|
|
+ (concat [(sqlite-util/build-new-property :user.property/foo {})
|
|
|
+ (sqlite-util/build-new-property :user.property/foo2 {})
|
|
|
+ (sqlite-util/build-new-property :user.property/number-many {:type :number :cardinality :many})
|
|
|
+ (sqlite-util/build-new-property :user.property/page-many {:type :page :cardinality :many})
|
|
|
+ page
|
|
|
+ page-a]
|
|
|
+ (mapcat #(if (set? %) % [%]) (vals page-prop-vals-tx-m))
|
|
|
+ (mapcat #(if (set? %) % [%]) (vals page-a-prop-vals-tx-m))
|
|
|
+ [(merge {:block/uuid (:block/uuid page)}
|
|
|
+ (db-property-build/build-properties-with-ref-values page-prop-vals-tx-m))
|
|
|
+ {:block/uuid (:block/uuid page) :user.property/page-many #{[:block/uuid (:block/uuid page-a)]}}
|
|
|
+ (merge {:block/uuid (:block/uuid page-a)}
|
|
|
+ (db-property-build/build-properties-with-ref-values page-a-prop-vals-tx-m))]))]
|
|
|
|
|
|
(testing "cardinality :one property"
|
|
|
(is (= ["Page"]
|
|
|
@@ -96,7 +107,7 @@
|
|
|
(testing ":ref property"
|
|
|
(is (= ["Page"]
|
|
|
(->> (q-with-rules '[:find (pull ?b [:block/original-name])
|
|
|
- :where (page-property ?b :user.property/page-many ?pv) [?pv :block/original-name "Page A"]]
|
|
|
+ :where (page-property ?b :user.property/page-many "Page A")]
|
|
|
@conn)
|
|
|
(map (comp :block/original-name first))))
|
|
|
"page-property returns result when page has property")
|
|
|
@@ -117,7 +128,7 @@
|
|
|
(is (= #{[:user.property/number-many 10]
|
|
|
[:user.property/number-many 5]
|
|
|
[:user.property/foo "bar"]
|
|
|
- [:user.property/page-many (:db/id (ldb/get-page @conn "Page A"))]}
|
|
|
+ [:user.property/page-many "Page A"]}
|
|
|
(->> (q-with-rules '[:find ?p ?v
|
|
|
:where (page-property ?b ?p ?v) [?b :block/original-name "Page"]]
|
|
|
@conn)
|
|
|
@@ -126,7 +137,7 @@
|
|
|
(is (= #{"Page"}
|
|
|
(->> (q-with-rules '[:find (pull ?b [:block/original-name])
|
|
|
:where
|
|
|
- (page-property ?b :user.property/page-many ?pv)
|
|
|
+ [?b :user.property/page-many ?pv]
|
|
|
(page-property ?pv :user.property/foo "bar A")]
|
|
|
@conn)
|
|
|
(map (comp :block/original-name first))
|