From d18e3da72b346124ddfd320457ac7d1b1ab5ceb7 Mon Sep 17 00:00:00 2001
From: Cam Saul <1455846+camsaul@users.noreply.github.com>
Date: Mon, 12 Dec 2022 16:35:52 -0800
Subject: [PATCH] Remove unused `metabase.models.table` `metrics` and
 `segments` functions (#27130)

* Remove unused `metabase.models.table` `metrics` and `segments` functions

* Remove more unused
---
 src/metabase/models/metric.clj        | 44 +++++++------------------
 src/metabase/models/segment.clj       | 40 +++++++----------------
 src/metabase/models/table.clj         | 47 +++++++++++----------------
 test/metabase/models/metric_test.clj  | 44 +++++++------------------
 test/metabase/models/segment_test.clj | 47 +++++++--------------------
 5 files changed, 65 insertions(+), 157 deletions(-)

diff --git a/src/metabase/models/metric.clj b/src/metabase/models/metric.clj
index 9ea0737a8d0..d3094d0863f 100644
--- a/src/metabase/models/metric.clj
+++ b/src/metabase/models/metric.clj
@@ -2,20 +2,18 @@
   "A Metric is a saved MBQL 'macro' expanding to a combination of `:aggregation` and/or `:filter` clauses.
   It is passed in as an `:aggregation` clause but is replaced by the `expand-macros` middleware with the appropriate
   clauses."
-  (:require [clojure.set :as set]
-            [medley.core :as m]
-            [metabase.models.interface :as mi]
-            [metabase.models.revision :as revision]
-            [metabase.models.serialization.base :as serdes.base]
-            [metabase.models.serialization.hash :as serdes.hash]
-            [metabase.models.serialization.util :as serdes.util]
-            [metabase.util :as u]
-            [metabase.util.i18n :refer [tru]]
-            [metabase.util.schema :as su]
-            [schema.core :as s]
-            [toucan.db :as db]
-            [toucan.hydrate :refer [hydrate]]
-            [toucan.models :as models]))
+  (:require
+   [clojure.set :as set]
+   [medley.core :as m]
+   [metabase.models.interface :as mi]
+   [metabase.models.revision :as revision]
+   [metabase.models.serialization.base :as serdes.base]
+   [metabase.models.serialization.hash :as serdes.hash]
+   [metabase.models.serialization.util :as serdes.util]
+   [metabase.util :as u]
+   [metabase.util.i18n :refer [tru]]
+   [toucan.db :as db]
+   [toucan.models :as models]))
 
 (models/defmodel Metric :metric)
 
@@ -103,21 +101,3 @@
         (concat ["metrics" (serdes.base/storage-leaf-file-name id label)]))))
 
 (serdes.base/register-ingestion-path! "Metric" (serdes.base/ingestion-matcher-collected "databases" "Metric"))
-
-;;; ----------------------------------------------------- OTHER ------------------------------------------------------
-
-(s/defn retrieve-metrics :- [(mi/InstanceOf Metric)]
-  "Fetch all `Metrics` for a given `Table`. Optional second argument allows filtering by active state by providing one
-  of 3 keyword values: `:active`, `:deleted`, `:all`. Default filtering is for `:active`."
-  ([table-id :- su/IntGreaterThanZero]
-   (retrieve-metrics table-id :active))
-
-  ([table-id :- su/IntGreaterThanZero, state :- (s/enum :all :active :deleted)]
-   (-> (db/select Metric
-         {:where    [:and [:= :table_id table-id]
-                     (case state
-                       :all     true
-                       :active  [:= :archived false]
-                       :deleted [:= :archived true])]
-          :order-by [[:name :asc]]})
-       (hydrate :creator))))
diff --git a/src/metabase/models/segment.clj b/src/metabase/models/segment.clj
index 48aa9a316f8..9c106b251b8 100644
--- a/src/metabase/models/segment.clj
+++ b/src/metabase/models/segment.clj
@@ -1,20 +1,18 @@
 (ns metabase.models.segment
   "A Segment is a saved MBQL 'macro', expanding to a `:filter` subclause. It is passed in as a `:filter` subclause but is
   replaced by the `expand-macros` middleware with the appropriate clauses."
-  (:require [clojure.set :as set]
-            [medley.core :as m]
-            [metabase.models.interface :as mi]
-            [metabase.models.revision :as revision]
-            [metabase.models.serialization.base :as serdes.base]
-            [metabase.models.serialization.hash :as serdes.hash]
-            [metabase.models.serialization.util :as serdes.util]
-            [metabase.util :as u]
-            [metabase.util.i18n :refer [tru]]
-            [metabase.util.schema :as su]
-            [schema.core :as s]
-            [toucan.db :as db]
-            [toucan.hydrate :refer [hydrate]]
-            [toucan.models :as models]))
+  (:require
+   [clojure.set :as set]
+   [medley.core :as m]
+   [metabase.models.interface :as mi]
+   [metabase.models.revision :as revision]
+   [metabase.models.serialization.base :as serdes.base]
+   [metabase.models.serialization.hash :as serdes.hash]
+   [metabase.models.serialization.util :as serdes.util]
+   [metabase.util :as u]
+   [metabase.util.i18n :refer [tru]]
+   [toucan.db :as db]
+   [toucan.models :as models]))
 
 (models/defmodel Segment :segment)
 
@@ -103,17 +101,3 @@
         (concat ["segments" (serdes.base/storage-leaf-file-name id label)]))))
 
 (serdes.base/register-ingestion-path! "Segment" (serdes.base/ingestion-matcher-collected "databases" "Segment"))
-
-;;; ------------------------------------------------------ Etc. ------------------------------------------------------
-
-(s/defn retrieve-segments :- [(mi/InstanceOf Segment)]
-  "Fetch all `Segments` for a given `Table`. Optional second argument allows filtering by active state by providing
-   one of 3 keyword values: `:active`, `:deleted`, `:all`. Default filtering is for `:active`."
-  ([table-id :- su/IntGreaterThanZero]
-   (retrieve-segments table-id :active))
-
-  ([table-id :- su/IntGreaterThanZero state :- (s/enum :active :deleted :all)]
-   (-> (if (= :all state)
-         (db/select Segment, :table_id table-id, {:order-by [[:name :asc]]})
-         (db/select Segment, :table_id table-id, :archived (= :deleted state), {:order-by [[:name :asc]]}))
-       (hydrate :creator))))
diff --git a/src/metabase/models/table.clj b/src/metabase/models/table.clj
index 874d43bd241..31edf49a2f3 100644
--- a/src/metabase/models/table.clj
+++ b/src/metabase/models/table.clj
@@ -1,22 +1,23 @@
 (ns metabase.models.table
-  (:require [honeysql.core :as hsql]
-            [metabase.db.connection :as mdb.connection]
-            [metabase.db.util :as mdb.u]
-            [metabase.driver :as driver]
-            [metabase.models.database :refer [Database]]
-            [metabase.models.field :refer [Field]]
-            [metabase.models.field-values :refer [FieldValues]]
-            [metabase.models.humanization :as humanization]
-            [metabase.models.interface :as mi]
-            [metabase.models.metric :refer [Metric retrieve-metrics]]
-            [metabase.models.permissions :as perms :refer [Permissions]]
-            [metabase.models.segment :refer [retrieve-segments Segment]]
-            [metabase.models.serialization.base :as serdes.base]
-            [metabase.models.serialization.hash :as serdes.hash]
-            [metabase.models.serialization.util :as serdes.util]
-            [metabase.util :as u]
-            [toucan.db :as db]
-            [toucan.models :as models]))
+  (:require
+   [honeysql.core :as hsql]
+   [metabase.db.connection :as mdb.connection]
+   [metabase.db.util :as mdb.u]
+   [metabase.driver :as driver]
+   [metabase.models.database :refer [Database]]
+   [metabase.models.field :refer [Field]]
+   [metabase.models.field-values :refer [FieldValues]]
+   [metabase.models.humanization :as humanization]
+   [metabase.models.interface :as mi]
+   [metabase.models.metric :refer [Metric]]
+   [metabase.models.permissions :as perms :refer [Permissions]]
+   [metabase.models.segment :refer [Segment]]
+   [metabase.models.serialization.base :as serdes.base]
+   [metabase.models.serialization.hash :as serdes.hash]
+   [metabase.models.serialization.util :as serdes.util]
+   [metabase.util :as u]
+   [toucan.db :as db]
+   [toucan.models :as models]))
 
 ;;; ----------------------------------------------- Constants + Entity -----------------------------------------------
 
@@ -143,16 +144,6 @@
     :visibility_type [:not= "retired"]
     {:order-by field-order-rule}))
 
-(defn metrics
-  "Retrieve the Metrics for a single `table`."
-  [{:keys [id]}]
-  (retrieve-metrics id :all))
-
-(defn segments
-  "Retrieve the Segments for a single `table`."
-  [{:keys [id]}]
-  (retrieve-segments id :all))
-
 (defn field-values
   "Return the FieldValues for all Fields belonging to a single `table`."
   {:hydrate :field_values, :arglists '([table])}
diff --git a/test/metabase/models/metric_test.clj b/test/metabase/models/metric_test.clj
index d23c3c7a360..82fa19554b7 100644
--- a/test/metabase/models/metric_test.clj
+++ b/test/metabase/models/metric_test.clj
@@ -1,14 +1,15 @@
 (ns metabase.models.metric-test
-  (:require [clojure.test :refer :all]
-            [metabase.models.database :refer [Database]]
-            [metabase.models.metric :as metric :refer [Metric]]
-            [metabase.models.revision :as revision]
-            [metabase.models.serialization.hash :as serdes.hash]
-            [metabase.models.table :refer [Table]]
-            [metabase.test :as mt]
-            [metabase.util :as u]
-            [toucan.db :as db])
-  (:import java.time.LocalDateTime))
+  (:require
+   [clojure.test :refer :all]
+   [metabase.models.database :refer [Database]]
+   [metabase.models.metric :as metric :refer [Metric]]
+   [metabase.models.revision :as revision]
+   [metabase.models.serialization.hash :as serdes.hash]
+   [metabase.models.table :refer [Table]]
+   [metabase.test :as mt]
+   [toucan.db :as db])
+  (:import
+   (java.time LocalDateTime)))
 
 (def ^:private metric-defaults
   {:description             nil
@@ -20,29 +21,6 @@
    :entity_id               true
    :definition              nil})
 
-(defn- user-details
-  [username]
-  (dissoc (mt/fetch-user username) :date_joined :last_login))
-
-(deftest retrieve-metrics-test
-  (mt/with-temp* [Database [{database-id :id}]
-                  Table    [{table-id-1 :id} {:db_id database-id}]
-                  Table    [{table-id-2 :id} {:db_id database-id}]
-                  Metric   [segment-1        {:table_id table-id-1, :name "Metric 1", :description nil}]
-                  Metric   [_                {:table_id table-id-2}]
-                  Metric   [_                {:table_id table-id-1, :archived true}]]
-    (is (= [(merge
-             metric-defaults
-             {:creator_id (mt/user->id :rasta)
-              :creator    (user-details :rasta)
-              :entity_id  (:entity_id segment-1)
-              :name       "Metric 1"})]
-           (for [metric (u/prog1 (metric/retrieve-metrics table-id-1)
-                                 (assert (= 1 (count <>))))]
-             (update (dissoc (into {} metric) :id :table_id :created_at :updated_at)
-                     :creator dissoc :date_joined :last_login))))))
-
-
 (deftest update-test
   (testing "Updating"
     (mt/with-temp Metric [{:keys [id]} {:creator_id (mt/user->id :rasta)}]
diff --git a/test/metabase/models/segment_test.clj b/test/metabase/models/segment_test.clj
index 57f864b089c..4dd61474c72 100644
--- a/test/metabase/models/segment_test.clj
+++ b/test/metabase/models/segment_test.clj
@@ -1,18 +1,15 @@
 (ns metabase.models.segment-test
-  (:require [clojure.test :refer :all]
-            [metabase.models.database :refer [Database]]
-            [metabase.models.revision :as revision]
-            [metabase.models.segment :as segment :refer [Segment]]
-            [metabase.models.serialization.hash :as serdes.hash]
-            [metabase.models.table :refer [Table]]
-            [metabase.test :as mt]
-            [metabase.util :as u]
-            [toucan.db :as db])
-  (:import java.time.LocalDateTime))
-
-(defn- user-details
-  [username]
-  (dissoc (mt/fetch-user username) :date_joined :last_login))
+  (:require
+   [clojure.test :refer :all]
+   [metabase.models.database :refer [Database]]
+   [metabase.models.revision :as revision]
+   [metabase.models.segment :as segment :refer [Segment]]
+   [metabase.models.serialization.hash :as serdes.hash]
+   [metabase.models.table :refer [Table]]
+   [metabase.test :as mt]
+   [toucan.db :as db])
+  (:import
+   (java.time LocalDateTime)))
 
 (deftest update-test
   (testing "Updating"
@@ -31,28 +28,6 @@
         (is (= true
                (db/update! Segment id {:creator_id (mt/user->id :rasta)})))))))
 
-(deftest retrieve-segments-test
-  (mt/with-temp* [Database [{database-id :id}]
-                  Table    [{table-id-1 :id} {:db_id database-id}]
-                  Table    [{table-id-2 :id} {:db_id database-id}]
-                  Segment  [segment-1 {:table_id table-id-1, :name "Segment 1", :description nil}]
-                  Segment  [_         {:table_id table-id-2}]
-                  Segment  [_         {:table_id table-id-1, :archived true}]]
-    (is (= [{:creator_id              (mt/user->id :rasta)
-             :creator                 (user-details :rasta)
-             :name                    "Segment 1"
-             :description             nil
-             :show_in_getting_started false
-             :caveats                 nil
-             :points_of_interest      nil
-             :archived                false
-             :definition              nil
-             :entity_id               (:entity_id segment-1)}]
-           (for [segment (u/prog1 (segment/retrieve-segments table-id-1)
-                           (assert (= 1 (count <>))))]
-             (-> (dissoc (into {} segment) :id :table_id :created_at :updated_at)
-                 (update :creator #(dissoc % :date_joined :last_login))))))))
-
 (deftest serialize-segment-test
   (mt/with-temp* [Database [{database-id :id}]
                   Table    [{table-id :id} {:db_id database-id}]
-- 
GitLab