diff --git a/src/metabase/models/field.clj b/src/metabase/models/field.clj index 8e2a163ec4041451645c9973a53fffabf9d4d4ad..be152324c887229aece3ab70fe548b3962f2e06c 100644 --- a/src/metabase/models/field.clj +++ b/src/metabase/models/field.clj @@ -2,7 +2,8 @@ (:require [korma.core :refer :all] [metabase.api.common :refer [check]] [metabase.db :refer :all] - (metabase.models [database :refer [Database]]) + (metabase.models [database :refer [Database]] + [foreign-key :refer [ForeignKey]]) [metabase.util :as util])) (def special-types @@ -73,10 +74,13 @@ (defentity Field (table :metabase_field)) -(defmethod post-select Field [_ {:keys [table_id] :as field}] +(defmethod post-select Field [_ {:keys [id special_type table_id] :as field}] (util/assoc* field :table (delay (sel :one 'metabase.models.table/Table :id table_id)) :db (delay @(:db @(:table <>))) + :target (delay (when (= "fk" special_type) + (let [dest-id (:destination_id (sel :one :fields [ForeignKey :destination_id] :origin_id id))] + (sel :one Field :id dest-id)))) :can_read (delay @(:can_read @(:table <>))) :can_write (delay @(:can_write @(:table <>)))))