diff --git a/src/metabase/lib/core.cljc b/src/metabase/lib/core.cljc index c7b14fd4af1b143093618269a1ec9cf223e080d7..84e9d27780de7a6af2e8b673fec4dd3e997db315 100644 --- a/src/metabase/lib/core.cljc +++ b/src/metabase/lib/core.cljc @@ -256,6 +256,7 @@ [lib.query can-run query + stage-count with-different-table] [lib.ref ref] diff --git a/src/metabase/lib/js.cljs b/src/metabase/lib/js.cljs index d70db5d2597b9f995099372ad991f7994d976403..f7e09b1d4ac0671bc3d48d2337efd2c19260b008 100644 --- a/src/metabase/lib/js.cljs +++ b/src/metabase/lib/js.cljs @@ -996,3 +996,8 @@ offset-n (some-> offset-unit keyword) (js->clj options :keywordize-keys true))) + +(defn ^:export stage-count + "Returns the count of stages in query" + [a-query] + (lib.core/stage-count a-query)) diff --git a/src/metabase/lib/query.cljc b/src/metabase/lib/query.cljc index 6d0e7cd037f3a294ae9e303c4b655616e28786c2..7fddf5f2afb0d90808b4adfb4d36c3848b548572 100644 --- a/src/metabase/lib/query.cljc +++ b/src/metabase/lib/query.cljc @@ -11,6 +11,7 @@ [metabase.lib.metadata.calculation :as lib.metadata.calculation] [metabase.lib.normalize :as lib.normalize] [metabase.lib.schema :as lib.schema] + [metabase.lib.schema.common :as lib.schema.common] [metabase.lib.schema.id :as lib.schema.id] [metabase.lib.util :as lib.util] [metabase.mbql.util :as mbql.u] @@ -39,6 +40,11 @@ [query stage-number x style] (lib.metadata.calculation/display-name query stage-number (lib.util/query-stage x stage-number) style)) +(mu/defn stage-count :- ::lib.schema.common/int-greater-than-or-equal-to-zero + "Returns the count of stages in query" + [query :- ::lib.schema/query] + (count (:stages query))) + (defmulti can-run-method "Returns whether the query is runnable based on first stage :lib/type" (fn [query] diff --git a/test/metabase/lib/query_test.cljc b/test/metabase/lib/query_test.cljc index 52cb656e933b805fc2224e8940f3d6eb5489ac79..8cdea441e246246ca0601e725dc8c64f547b22e8 100644 --- a/test/metabase/lib/query_test.cljc +++ b/test/metabase/lib/query_test.cljc @@ -90,3 +90,8 @@ "CC"]]]}]}]} (lib/query meta/metadata-provider converted-query)))))) + +(deftest ^:parallel stage-count-test + (is (= 1 (lib/stage-count lib.tu/venues-query))) + (is (= 2 (lib/stage-count (lib/append-stage lib.tu/venues-query)))) + (is (= 3 (lib/stage-count (lib/append-stage (lib/append-stage lib.tu/venues-query))))))