Skip to content
Snippets Groups Projects
Unverified Commit 635d9ef4 authored by Cam Saul's avatar Cam Saul
Browse files

Fix has_field_values inference

parent f1652713
No related branches found
No related tags found
No related merge requests found
......@@ -166,6 +166,15 @@
(for [field fields]
(assoc field :dimensions (get id->dimensions (:id field) [])))))
(defn- is-searchable?
"Is this `field` a Field that you should be presented with a search widget for (to search its values)? If so, we can
give it a `has_field_values` value of `search`."
[{base-type :base_type}]
;; For the time being we will consider something to be "searchable" if it's a text Field since the `starts-with`
;; filter that powers the search queries (see `metabase.api.field/search-values`) doesn't work on anything else
(or (isa? base-type :type/Text)
(isa? base-type :type/TextLike)))
(defn with-has-field-values
"Infer what the value of the `has_field_values` should be for Fields where it's not set. Admins can set this to one
of the values below, but if it's `nil` in the DB we'll infer it automatically.
......@@ -182,11 +191,13 @@
(db/select-field :field_id FieldValues
:field_id [:in fields-without-has-field-values-ids]))]
(for [field fields]
(do
(assoc field :has_field_values (or (:has_field_values field)
(if (contains? fields-with-fieldvalues-ids (u/get-id field))
:list
:search)))))))
(assoc field
:has_field_values (or
(:has_field_values field)
(cond
(contains? fields-with-fieldvalues-ids (u/get-id field)) :list
(is-searchable? field) :search
:else :none))))))
(defn readable-fields-only
"Efficiently checks if each field is readable and returns only readable fields"
......
......@@ -307,7 +307,7 @@
:database_type "BIGINT"
:base_type "type/BigInteger"
:visibility_type "normal"
:has_field_values "search")
:has_field_values "none")
(assoc (field-details (Field (data/id :categories :name)))
:table_id (data/id :categories)
:special_type "type/Name"
......
......@@ -182,7 +182,7 @@
:display_name "ID"
:database_type "BIGINT"
:base_type "type/BigInteger"
:has_field_values "search")
:has_field_values "none")
(assoc (field-details (Field (data/id :categories :name)))
:table_id (data/id :categories)
:special_type "type/Name"
......@@ -235,7 +235,7 @@
:database_type "BIGINT"
:base_type "type/BigInteger"
:visibility_type "normal"
:has_field_values "search")
:has_field_values "none")
(assoc (field-details (Field (data/id :users :last_login)))
:table_id (data/id :users)
:name "LAST_LOGIN"
......@@ -245,7 +245,7 @@
:visibility_type "normal"
:dimension_options (var-get #'table-api/datetime-dimension-indexes)
:default_dimension_option (var-get #'table-api/date-default-index)
:has_field_values "search")
:has_field_values "none")
(assoc (field-details (Field (data/id :users :name)))
:special_type "type/Name"
:table_id (data/id :users)
......@@ -288,7 +288,7 @@
:display_name "ID"
:database_type "BIGINT"
:base_type "type/BigInteger"
:has_field_values "search")
:has_field_values "none")
(assoc (field-details (Field (data/id :users :last_login)))
:table_id (data/id :users)
:name "LAST_LOGIN"
......@@ -297,7 +297,7 @@
:base_type "type/DateTime"
:dimension_options (var-get #'table-api/datetime-dimension-indexes)
:default_dimension_option (var-get #'table-api/date-default-index)
:has_field_values "search")
:has_field_values "none")
(assoc (field-details (Field (data/id :users :name)))
:table_id (data/id :users)
:special_type "type/Name"
......
......@@ -63,7 +63,7 @@
:display_name "ID"
:base_type :type/BigInteger
:special_type :type/PK
:has_field_values :search
:has_field_values :none
:name_field {:id (data/id :venues :name)
:table_id (data/id :venues)
:display_name "Name"
......@@ -88,7 +88,7 @@
:display_name "ID"
:base_type :type/BigInteger
:special_type :type/PK
:has_field_values :search
:has_field_values :none
:name_field {:id (data/id :venues :name)
:table_id (data/id :venues)
:display_name "Name"
......
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