Skip to content
Snippets Groups Projects
Commit 2786bb76 authored by Allen Gilliland's avatar Allen Gilliland
Browse files

Merge pull request #325 from metabase/ag-field-values

add field values to query_metadata endpoint
parents e8587961 cc93afe8
Branches
Tags
No related merge requests found
......@@ -53,7 +53,7 @@
(defendpoint GET "/:id/query_metadata" [id]
(->404 (sel :one Table :id id)
(hydrate :db [:fields [:target]])))
(hydrate :db [:fields [:target]] :field_values)))
(defendpoint GET "/:id/fks"
"Get all `ForeignKeys` whose destination is a `Field` that belongs to this `Table`."
......
......@@ -2,7 +2,8 @@
(:require [korma.core :refer :all]
[metabase.db :refer :all]
(metabase.models [database :as db]
[field :refer [Field]])
[field :refer [Field]]
[field-values :refer [FieldValues]])
[metabase.util :as u]))
(def entity-types
......@@ -16,14 +17,24 @@
(assoc :hydration-keys #{:table}))
; also missing :active and :pk_field
(defmethod post-select Table [_ {:keys [id db db_id description] :as table}]
(u/assoc* table
:db (or db (delay (sel :one db/Database :id db_id)))
:fields (delay (sel :many Field :table_id id :active true (order :position :ASC) (order :name :ASC)))
:description (u/jdbc-clob->str description)
:pk_field (delay (:id (sel :one :fields [Field :id] :table_id id (where {:special_type "id"}))))
:can_read (delay @(:can_read @(:db <>)))
:can_write (delay @(:can_write @(:db <>)))))
:db (or db (delay (sel :one db/Database :id db_id)))
:fields (delay (sel :many Field :table_id id :active true (order :position :ASC) (order :name :ASC)))
:field_values (delay
(let [field-ids (sel :many :field [Field :id]
:table_id id
:active true
(order :position :asc)
(order :name :asc))]
(->> (sel :many FieldValues :field_id [in field-ids])
(map (fn [{:keys [field_id values]}] {field_id values}))
(apply merge))))
:description (u/jdbc-clob->str description)
:pk_field (delay (:id (sel :one :fields [Field :id] :table_id id (where {:special_type "id"}))))
:can_read (delay @(:can_read @(:db <>)))
:can_write (delay @(:can_write @(:db <>)))))
(defmethod pre-cascade-delete Table [_ {:keys [id] :as table}]
......
......@@ -83,6 +83,7 @@
((user->client :rasta) :get 200 (format "meta/table/%d/fields" (table->id :categories))))
;; ## GET /api/meta/table/:id/query_metadata
; TODO - create test which includes :field_values
(expect
(match-$ (sel :one Table :id (table->id :categories))
{:description nil
......@@ -125,6 +126,7 @@
:preview_display true
:created_at $
:base_type "TextField"})]
:field_values nil
:rows 75
:updated_at $
:entity_name nil
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment