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