From 5f478d1084abe760abfef62601ce08be7f3a2ce7 Mon Sep 17 00:00:00 2001
From: Case Nelson <case@metabase.com>
Date: Mon, 12 Sep 2022 13:32:08 -0600
Subject: [PATCH] [Apps] exclude is_write cards from virutal tables (#25367)

When creating a new question, you can choose an existing saved question
as your starting point. However, we want to exclude is_write cards from
that list.
---
 src/metabase/api/database.clj       | 1 +
 test/metabase/api/database_test.clj | 4 +++-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/metabase/api/database.clj b/src/metabase/api/database.clj
index fe429cd3ec6..97645e320bc 100644
--- a/src/metabase/api/database.clj
+++ b/src/metabase/api/database.clj
@@ -154,6 +154,7 @@
                           :where    (into [:and
                                            [:not= :result_metadata nil]
                                            [:= :archived false]
+                                           [:= :is_write false]
                                            [:= :dataset (= question-type :dataset)]
                                            [:in :database_id ids-of-dbs-that-support-source-queries]
                                            (collection/visible-collection-ids->honeysql-filter-clause
diff --git a/test/metabase/api/database_test.clj b/test/metabase/api/database_test.clj
index d7b8b72003c..0626d653bd7 100644
--- a/test/metabase/api/database_test.clj
+++ b/test/metabase/api/database_test.clj
@@ -1016,7 +1016,8 @@
     (testing "should work for the saved questions 'virtual' database"
       (mt/with-temp* [Collection [coll   {:name "My Collection"}]
                       Card       [card-1 (assoc (card-with-native-query "Card 1") :collection_id (:id coll))]
-                      Card       [card-2 (card-with-native-query "Card 2")]]
+                      Card       [card-2 (card-with-native-query "Card 2")]
+                      Card       [_card-3 (assoc (card-with-native-query "Card 3") :is_write true :result_metadata {})]]
         ;; run the cards to populate their result_metadata columns
         (doseq [card [card-1 card-2]]
           (mt/user-http-request :crowberto :post 202 (format "card/%d/query" (u/the-id card))))
@@ -1040,6 +1041,7 @@
                            :schema           (s/eq (api.table/root-collection-schema-name))
                            :description      (s/maybe s/Str)}]
                          response))
+            (is (not (contains? (set (map :display_name response)) "Card 3")))
             (is (contains? (set response)
                            {:id               (format "card__%d" (:id card-2))
                             :db_id            (mt/id)
-- 
GitLab