1
0
Эх сурвалжийг харах

fix: db import imports simple queries with new query property

Part of LOG-3243
Gabriel Horner 1 жил өмнө
parent
commit
83c59128ad

+ 9 - 1
deps/graph-parser/src/logseq/graph_parser/exporter.cljs

@@ -142,7 +142,10 @@
           block)]
     (cond-> block'
       (macro-util/query-macro? (:block/title block))
-      (update :block/tags (fnil conj []) :logseq.class/Query))))
+      ((fn [b]
+         (merge (update b :block/tags (fnil conj []) :logseq.class/Query)
+                ;; Blank title here as query property has already been set
+                {:block/title ""}))))))
 
 (defn- update-block-marker
   "If a block has a marker, convert it to a task object"
@@ -381,6 +384,11 @@
                          [(built-in-property-name-to-idents prop) prop-value]))))
              (into {}))]
     (cond-> m
+      (macro-util/query-macro? title)
+      (assoc :logseq.property/query
+             (or (some->> (second (re-find #"\{\{query(.*)\}\}" title))
+                          string/trim)
+                 title))
       (and (contains? props :query-sort-desc) (:query-sort-by props))
       (update :logseq.property.table/sorting
               (fn [v]

+ 18 - 9
deps/graph-parser/test/logseq/graph_parser/exporter_test.cljs

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