Skip to content
Snippets Groups Projects
Commit 610a119b authored by Cam Saül's avatar Cam Saül
Browse files

improvements

parent ebbed1ed
No related branches found
No related tags found
No related merge requests found
......@@ -44,7 +44,9 @@
{:status :failed
:error (.getMessage e)
:stacktrace (u/filtered-stacktrace e)
:query (dissoc query :database)}))))
:query (dissoc query :database :driver)
:expanded-query (try (dissoc (expand/expand query) :database :driver)
(catch Throwable _))}))))
(defn- pre-expand [qp]
......
......@@ -115,13 +115,16 @@
{:source_table 371, :aggregation ["rows"], :breakout [], :filter []}}))
;; (require '[metabase.test.data :refer [db-id id]])
;; (defn x []
;; (@(ns-resolve 'metabase.driver 'process-query)
;; {:type :query,
;; :database (db-id),
;; :query
;; {:source_table (id :users),
;; :aggregation ["cum_sum" (id :users :id)]}}))
(defn x []
(@(ns-resolve 'metabase.driver 'process-query)
{:database 339,
:type "query",
:query
{:source_table 820,
:aggregation ["count"],
:breakout [["fk->" 8896 8855]]}}))
(defn y* [n]
(dorun (repeatedly n y)))
......@@ -213,37 +216,8 @@
(name< f1 f2)))
((clause-pos< f1 f2)))))))))
(defn- resolve+order-cols [{:keys [result-keys], :as query}]
{:pre [(seq result-keys)]
:post [(sequential? %)]}
(first (let [fields (vec (lvars (count result-keys)))
known-field° (field° query)]
(run 1 [q]
(everyg (fn [[result-key field]]
(conda
((known-field° result-key field))
((unknown-field° result-key field))))
(zipmap result-keys fields))
(sorted-permutation° (fields-sorted° query) fields q)))))
;;; # ---------------------------------------- COLUMN DETAILS ----------------------------------------
;; Format the results in the way the front-end expects.
(defn- format-col [col]
(merge {:description nil
:id nil
:table_id nil}
(-> col
(set/rename-keys {:base-type :base_type
:field-id :id
:field-name :name
:special-type :special_type
:table-id :table_id})
(dissoc :position))))
(defn- fk-info-added° [field]
)
(defn- add-fields-extra-info
"Add `:extra_info` about `ForeignKeys` to `Fields` whose `special_type` is `:fk`."
......@@ -274,6 +248,35 @@
:extra_info (if-not dest-field {}
{:target_table_id (:table_id dest-field)})))))))
(defn- resolve+order-cols [{:keys [result-keys], :as query}]
(when (seq result-keys)
(first (let [fields (vec (lvars (count result-keys)))
known-field° (field° query)]
(run 1 [q]
(everyg (fn [[result-key field]]
(conda
((known-field° result-key field))
((unknown-field° result-key field))))
(zipmap result-keys fields))
(sorted-permutation° (fields-sorted° query) fields q))))))
;;; # ---------------------------------------- COLUMN DETAILS ----------------------------------------
;; Format the results in the way the front-end expects.
(defn- format-col [col]
(merge {:description nil
:id nil
:table_id nil}
(-> col
(set/rename-keys {:base-type :base_type
:field-id :id
:field-name :name
:special-type :special_type
:table-id :table_id})
(dissoc :position))))
(defn post-annotate [qp]
(fn [query]
(let [results (qp query)
......
......@@ -134,7 +134,7 @@
(defn- resolve-fields
"Resolve the `Fields` in an EXPANDED-QUERY-DICT."
[expanded-query-dict field-ids & [count]]
[expanded-query-dict field-ids]
(if-not (seq field-ids)
;; Base case: if there's no field-ids to expand we're done
expanded-query-dict
......@@ -149,9 +149,7 @@
;; Recurse in case any new [nested] Field placeholders were emitted and we need to do recursive Field resolution
;; We can't use recur here because binding wraps body in try/catch
(resolve-fields (walk/postwalk #(resolve-field % fields) expanded-query-dict)
@*field-ids*
(inc (or count 0)))))))
(resolve-fields (walk/postwalk #(resolve-field % fields) expanded-query-dict) @*field-ids*)))))
(defn- resolve-database
"Resolve the `Database` in question for an EXPANDED-QUERY-DICT."
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment