From cbd5e68896e1ed9d48433a1e11784a37cde4e985 Mon Sep 17 00:00:00 2001
From: Allen Gilliland <agilliland@gmail.com>
Date: Wed, 18 Mar 2015 15:58:13 -0700
Subject: [PATCH] add 'target' to Field returned by 'sel' post-select macro. 
 'target' refers to the Field an 'fk' type points to.

---
 src/metabase/models/field.clj | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/metabase/models/field.clj b/src/metabase/models/field.clj
index 8e2a163ec40..be152324c88 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 <>)))))
 
-- 
GitLab