Tienson Qin 5 лет назад
Родитель
Сommit
07bfc2edff
2 измененных файлов с 30 добавлено и 27 удалено
  1. 1 1
      src/main/api.cljs
  2. 29 26
      src/main/frontend/db/query_custom.cljs

+ 1 - 1
src/main/api.cljs

@@ -10,7 +10,7 @@
   (when-let [repo (state/get-current-repo)]
     (when-let [conn (db/get-conn repo)]
       (when-let [result (query-dsl/query repo query-string)]
-        @result))))
+        (clj->js @result)))))
 
 (defn ^:export datascript_query
   [query & inputs]

+ 29 - 26
src/main/frontend/db/query_custom.cljs

@@ -45,32 +45,35 @@
 
 (defn custom-query-result-transform
   [query-result remove-blocks q]
-  (let [repo (state/get-current-repo)
-        result (db-utils/seq-flatten query-result)
-        block? (:block/uuid (first result))]
-    (let [result (if block?
-                   (let [result (if (seq remove-blocks)
-                                  (let [remove-blocks (set remove-blocks)]
-                                    (remove (fn [h]
-                                              (contains? remove-blocks (:block/uuid h)))
-                                            result))
-                                  result)]
-                     (some->> result
-                              (db-utils/with-repo repo)
-                              (model/with-block-refs-count repo)
-                              (model/sort-blocks)))
-                   result)]
-      (if-let [result-transform (:result-transform q)]
-        (if-let [f (sci/eval-string (pr-str result-transform))]
-          (try
-            (sci/call-fn f result)
-            (catch js/Error e
-              (log/error :sci/call-error e)
-              result))
-          result)
-        (if block?
-          (db-utils/group-by-page result)
-          result)))))
+  (try
+    (let [repo (state/get-current-repo)
+         result (db-utils/seq-flatten query-result)
+         block? (:block/uuid (first result))]
+     (let [result (if block?
+                    (let [result (if (seq remove-blocks)
+                                   (let [remove-blocks (set remove-blocks)]
+                                     (remove (fn [h]
+                                               (contains? remove-blocks (:block/uuid h)))
+                                             result))
+                                   result)]
+                      (some->> result
+                               (db-utils/with-repo repo)
+                               (model/with-block-refs-count repo)
+                               (model/sort-blocks)))
+                    result)]
+       (if-let [result-transform (:result-transform q)]
+         (if-let [f (sci/eval-string (pr-str result-transform))]
+           (try
+             (sci/call-fn f result)
+             (catch js/Error e
+               (log/error :sci/call-error e)
+               result))
+           result)
+         (if block?
+           (db-utils/group-by-page result)
+           result))))
+    (catch js/Error e
+      (log/error :query/failed e))))
 
 (defn- resolve-query
   [query]