(ns metabase.lib.limit (:require [metabase.lib.metadata.calculation :as lib.metadata.calculation] [metabase.lib.schema :as lib.schema] [metabase.lib.util :as lib.util] [metabase.util.i18n :as i18n] [metabase.util.malli :as mu])) | |
(defmethod lib.metadata.calculation/describe-top-level-key-method :limit [query stage-number _k] (when-let [limit (:limit (lib.util/query-stage query stage-number))] (str limit \space (i18n/trun "row" "rows" limit)))) | |
(mu/defn ^:export limit :- ::lib.schema/query "Set the maximum number of rows to be returned by a stage of a query to `n`. If `n` is `nil`, remove the limit." ([query n] (limit query -1 n)) ([query :- ::lib.schema/query stage-number :- :int n :- [:maybe pos-int?]] (lib.util/update-query-stage query stage-number (fn [stage] (if n (assoc stage :limit n) (dissoc stage :limit)))))) | |
(mu/defn ^:export current-limit :- [:maybe pos-int?] "Get the maximum number of rows to be returned by a stage of a query. `nil` indicates there is no limit" ([query :- ::lib.schema/query] (current-limit query -1)) ([query :- ::lib.schema/query stage-number :- :int] (:limit (lib.util/query-stage query stage-number)))) | |