Skip to content
Snippets Groups Projects
Unverified Commit 5d594046 authored by Ryan Senior's avatar Ryan Senior Committed by GitHub
Browse files

Merge pull request #7988 from metabase/numeric-average-lengths

 Allow positive numeric values for text fingerprint average lengths 
parents de107b76 f745e365
No related branches found
No related tags found
No related merge requests found
......@@ -212,16 +212,11 @@
(update field :values fv/field-values->pairs)
field)))))
(api/defendpoint GET "/:id/query_metadata"
"Get metadata about a `Table` us eful for running queries.
Returns DB, fields, field FKs, and field values.
By passing `include_sensitive_fields=true`, information *about* sensitive `Fields` will be returned; in no case will
any of its corresponding values be returned. (This option is provided for use in the Admin Edit Metadata page)."
[id include_sensitive_fields]
{include_sensitive_fields (s/maybe su/BooleanString)}
(let [table (api/read-check Table id)
driver (driver/database-id->driver (:db_id table))]
(defn fetch-query-metadata
"Returns the query metadata used to power the query builder for the given table `table-or-table-id`"
[table include_sensitive_fields]
(api/read-check table)
(let [driver (driver/database-id->driver (:db_id table))]
(-> table
(hydrate :db [:fields [:target :has_field_values] :dimensions :has_field_values] :segments :metrics)
(m/dissoc-in [:db :details])
......@@ -234,6 +229,16 @@
(partial filter (fn [{:keys [visibility_type]}]
(not= (keyword visibility_type) :sensitive))))))))
(api/defendpoint GET "/:id/query_metadata"
"Get metadata about a `Table` useful for running queries.
Returns DB, fields, field FKs, and field values.
By passing `include_sensitive_fields=true`, information *about* sensitive `Fields` will be returned; in no case will
any of its corresponding values be returned. (This option is provided for use in the Admin Edit Metadata page)."
[id include_sensitive_fields]
{include_sensitive_fields (s/maybe su/BooleanString)}
(fetch-query-metadata (Table id) include_sensitive_fields))
(defn- card-result-metadata->virtual-fields
"Return a sequence of 'virtual' fields metadata for the 'virtual' table for a Card in the Saved Questions 'virtual'
database."
......
......@@ -3,9 +3,10 @@
(:require [cheshire.core :as json]
[metabase.sync.interface :as i]
[metabase.util :as u]
[metabase.util.schema :as su]
[schema.core :as s]))
(s/defn ^:private average-length :- (s/constrained Double #(>= % 0))
(s/defn ^:private average-length :- su/PositiveNum
"Return the average length of VALUES."
[values :- i/FieldSample]
(let [total-length (reduce + (for [value values]
......
......@@ -104,7 +104,7 @@
{(s/optional-key :percent-json) Percent
(s/optional-key :percent-url) Percent
(s/optional-key :percent-email) Percent
(s/optional-key :average-length) (s/constrained Double #(>= % 0) "Valid number greater than or equal to zero")})
(s/optional-key :average-length) su/PositiveNum})
(def DateTimeFingerprint
"Schema for fingerprint information for Fields deriving from `:type/DateTime`."
......
......@@ -118,6 +118,12 @@
(s/constrained s/Int (partial < 0) (tru "Integer greater than zero"))
(tru "value must be an integer greater than zero.")))
(def PositiveNum
"Schema representing a numeric value greater than zero. This allows floating point numbers and integers."
(with-api-error-message
(s/constrained s/Num (partial < 0) (tru "Number greater than zero"))
(tru "value must be a number greater than zero.")))
(def KeywordOrString
"Schema for something that can be either a `Keyword` or a `String`."
(s/named (s/cond-pre s/Keyword s/Str) (tru "Keyword or string")))
......
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