JavaScript-friendly interface to metabase.legacy-mbql util functions. | (ns metabase.legacy-mbql.js (:require [metabase.legacy-mbql.normalize :as mbql.normalize] [metabase.util :as u])) |
Sometimes JS queries are passed in with a | (defn unwrap
[x]
(cond
;; (object? x) only matches for things that are plain objects. eg. `(object? (js/Date.))` is false.
;; This matches anything that descends from `Object`, like `Join` clause, and has a `.raw()` method.
(and (instance? js/Object x)
(fn? (.-raw x))) (-> x (.raw) js->clj unwrap)
(map? x) (update-vals x unwrap)
(sequential? x) (mapv unwrap x)
:else x)) |
Normalize an MBQL query, and convert it to the latest and greatest version of MBQL. Returns the CLJS form of the normalized query. Use [[normalize]] for the JS form. | (defn normalize-cljs [query] (-> query js->clj unwrap mbql.normalize/normalize)) |
Normalize an MBQL query, and convert it to the latest and greatest version of MBQL. Returns the JS form of the normalized query. Use [[normalize-cljs]] for the CLJS form. | (defn ^:export normalize [query] (-> query normalize-cljs (clj->js :keyword-fn u/qualified-name))) |