Skip to content
Snippets Groups Projects
Commit 87362ede authored by Ryan Senior's avatar Ryan Senior
Browse files

Apply field-should-have-field-values? predicate to query_metadata

This makes the query_metadata route behavior similar to the field
values route.
parent f0969106
No related branches found
No related tags found
No related merge requests found
......@@ -10,7 +10,7 @@
[metabase.models
[card :refer [Card]]
[database :as database]
[field :refer [Field]]
[field :refer [Field with-normal-values]]
[field-values :as fv]
[interface :as mi]
[table :as table :refer [Table]]]
......@@ -18,7 +18,8 @@
[schema.core :as s]
[toucan
[db :as db]
[hydrate :refer [hydrate]]]))
[hydrate :refer [hydrate]]]
[metabase.query :as q]))
;; TODO - I don't think this is used for anything any more
(def ^:private ^:deprecated TableEntityType
......@@ -97,7 +98,8 @@
[id include_sensitive_fields]
{include_sensitive_fields (s/maybe su/BooleanString)}
(-> (api/read-check Table id)
(hydrate :db [:fields :target :normal_values :dimensions] :segments :metrics)
(hydrate :db [:fields :target :dimensions] :segments :metrics)
(update :fields with-normal-values)
(m/dissoc-in [:db :details])
format-fields-for-response
(update-in [:fields] (if (Boolean/parseBoolean include_sensitive_fields)
......
......@@ -7,13 +7,14 @@
[util :as u]]
[metabase.models
[dimension :refer [Dimension]]
[field-values :refer [FieldValues]]
[field-values :refer [FieldValues] :as fv]
[humanization :as humanization]
[interface :as i]
[permissions :as perms]]
[toucan
[db :as db]
[models :as models]]))
[models :as models]]
[metabase.models.field-values :as fv]))
;;; ------------------------------------------------------------ Type Mappings ------------------------------------------------------------
......@@ -114,7 +115,7 @@
"Efficiently hydrate the `FieldValues` for visibility_type normal FIELDS."
{:batched-hydrate :normal_values}
[fields]
(let [id->field-values (keyed-by-field-ids (filter #(= :normal (:visibility_type %)) fields)
(let [id->field-values (keyed-by-field-ids (filter fv/field-should-have-field-values? fields)
[FieldValues :id :human_readable_values :values :field_id])]
(for [field fields]
(assoc field :values (get id->field-values (:id field) [])))))
......
......@@ -20,6 +20,7 @@
[metabase.test.data
[dataset-definitions :as defs]
[users :refer :all]]
[toucan.db :as db]
[toucan.util.test :as tt]))
(resolve-private-vars metabase.models.table pk-field-id)
......@@ -496,6 +497,17 @@
(dissoc dim :id :created_at :updated_at)
dim))))))
(defn- category-id-special-type
"Field values will only be returned when the field's special type is
set to type/Category. This function will change that for
category_id, then invoke `F` and roll it back afterwards"
[f]
(try
(db/update! Field (id :venues :category_id) {:special_type :type/Category})
(f)
(finally
(db/update! Field (id :venues :category_id) {:special_type nil}))))
;; ## GET /api/table/:id/query_metadata
;; Ensure internal remapped dimensions and human_readable_values are returned
(expect
......@@ -511,8 +523,10 @@
:dimensions []}]
(with-data
(create-venue-category-remapping "Foo")
(narrow-fields ["PRICE" "CATEGORY_ID"]
((user->client :rasta) :get 200 (format "table/%d/query_metadata" (id :venues))))))
(category-id-special-type
(fn []
(narrow-fields ["PRICE" "CATEGORY_ID"]
((user->client :rasta) :get 200 (format "table/%d/query_metadata" (id :venues))))))))
;; ## GET /api/table/:id/query_metadata
;; Ensure FK remappings are returned
......@@ -529,5 +543,7 @@
:dimensions []}]
(with-data
(create-venue-category-fk-remapping "Foo")
(narrow-fields ["PRICE" "CATEGORY_ID"]
((user->client :rasta) :get 200 (format "table/%d/query_metadata" (id :venues))))))
(category-id-special-type
(fn []
(narrow-fields ["PRICE" "CATEGORY_ID"]
((user->client :rasta) :get 200 (format "table/%d/query_metadata" (id :venues))))))))
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