Skip to content
Snippets Groups Projects
Unverified Commit d18e3da7 authored by Cam Saul's avatar Cam Saul Committed by GitHub
Browse files

Remove unused `metabase.models.table` `metrics` and `segments` functions (#27130)

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

* Remove more unused
parent 595e0e7e
No related branches found
No related tags found
No related merge requests found
...@@ -2,20 +2,18 @@ ...@@ -2,20 +2,18 @@
"A Metric is a saved MBQL 'macro' expanding to a combination of `:aggregation` and/or `:filter` clauses. "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 It is passed in as an `:aggregation` clause but is replaced by the `expand-macros` middleware with the appropriate
clauses." clauses."
(:require [clojure.set :as set] (:require
[medley.core :as m] [clojure.set :as set]
[metabase.models.interface :as mi] [medley.core :as m]
[metabase.models.revision :as revision] [metabase.models.interface :as mi]
[metabase.models.serialization.base :as serdes.base] [metabase.models.revision :as revision]
[metabase.models.serialization.hash :as serdes.hash] [metabase.models.serialization.base :as serdes.base]
[metabase.models.serialization.util :as serdes.util] [metabase.models.serialization.hash :as serdes.hash]
[metabase.util :as u] [metabase.models.serialization.util :as serdes.util]
[metabase.util.i18n :refer [tru]] [metabase.util :as u]
[metabase.util.schema :as su] [metabase.util.i18n :refer [tru]]
[schema.core :as s] [toucan.db :as db]
[toucan.db :as db] [toucan.models :as models]))
[toucan.hydrate :refer [hydrate]]
[toucan.models :as models]))
(models/defmodel Metric :metric) (models/defmodel Metric :metric)
...@@ -103,21 +101,3 @@ ...@@ -103,21 +101,3 @@
(concat ["metrics" (serdes.base/storage-leaf-file-name id label)])))) (concat ["metrics" (serdes.base/storage-leaf-file-name id label)]))))
(serdes.base/register-ingestion-path! "Metric" (serdes.base/ingestion-matcher-collected "databases" "Metric")) (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))))
(ns metabase.models.segment (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 "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." replaced by the `expand-macros` middleware with the appropriate clauses."
(:require [clojure.set :as set] (:require
[medley.core :as m] [clojure.set :as set]
[metabase.models.interface :as mi] [medley.core :as m]
[metabase.models.revision :as revision] [metabase.models.interface :as mi]
[metabase.models.serialization.base :as serdes.base] [metabase.models.revision :as revision]
[metabase.models.serialization.hash :as serdes.hash] [metabase.models.serialization.base :as serdes.base]
[metabase.models.serialization.util :as serdes.util] [metabase.models.serialization.hash :as serdes.hash]
[metabase.util :as u] [metabase.models.serialization.util :as serdes.util]
[metabase.util.i18n :refer [tru]] [metabase.util :as u]
[metabase.util.schema :as su] [metabase.util.i18n :refer [tru]]
[schema.core :as s] [toucan.db :as db]
[toucan.db :as db] [toucan.models :as models]))
[toucan.hydrate :refer [hydrate]]
[toucan.models :as models]))
(models/defmodel Segment :segment) (models/defmodel Segment :segment)
...@@ -103,17 +101,3 @@ ...@@ -103,17 +101,3 @@
(concat ["segments" (serdes.base/storage-leaf-file-name id label)])))) (concat ["segments" (serdes.base/storage-leaf-file-name id label)]))))
(serdes.base/register-ingestion-path! "Segment" (serdes.base/ingestion-matcher-collected "databases" "Segment")) (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))))
(ns metabase.models.table (ns metabase.models.table
(:require [honeysql.core :as hsql] (:require
[metabase.db.connection :as mdb.connection] [honeysql.core :as hsql]
[metabase.db.util :as mdb.u] [metabase.db.connection :as mdb.connection]
[metabase.driver :as driver] [metabase.db.util :as mdb.u]
[metabase.models.database :refer [Database]] [metabase.driver :as driver]
[metabase.models.field :refer [Field]] [metabase.models.database :refer [Database]]
[metabase.models.field-values :refer [FieldValues]] [metabase.models.field :refer [Field]]
[metabase.models.humanization :as humanization] [metabase.models.field-values :refer [FieldValues]]
[metabase.models.interface :as mi] [metabase.models.humanization :as humanization]
[metabase.models.metric :refer [Metric retrieve-metrics]] [metabase.models.interface :as mi]
[metabase.models.permissions :as perms :refer [Permissions]] [metabase.models.metric :refer [Metric]]
[metabase.models.segment :refer [retrieve-segments Segment]] [metabase.models.permissions :as perms :refer [Permissions]]
[metabase.models.serialization.base :as serdes.base] [metabase.models.segment :refer [Segment]]
[metabase.models.serialization.hash :as serdes.hash] [metabase.models.serialization.base :as serdes.base]
[metabase.models.serialization.util :as serdes.util] [metabase.models.serialization.hash :as serdes.hash]
[metabase.util :as u] [metabase.models.serialization.util :as serdes.util]
[toucan.db :as db] [metabase.util :as u]
[toucan.models :as models])) [toucan.db :as db]
[toucan.models :as models]))
;;; ----------------------------------------------- Constants + Entity ----------------------------------------------- ;;; ----------------------------------------------- Constants + Entity -----------------------------------------------
...@@ -143,16 +144,6 @@ ...@@ -143,16 +144,6 @@
:visibility_type [:not= "retired"] :visibility_type [:not= "retired"]
{:order-by field-order-rule})) {: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 (defn field-values
"Return the FieldValues for all Fields belonging to a single `table`." "Return the FieldValues for all Fields belonging to a single `table`."
{:hydrate :field_values, :arglists '([table])} {:hydrate :field_values, :arglists '([table])}
......
(ns metabase.models.metric-test (ns metabase.models.metric-test
(:require [clojure.test :refer :all] (:require
[metabase.models.database :refer [Database]] [clojure.test :refer :all]
[metabase.models.metric :as metric :refer [Metric]] [metabase.models.database :refer [Database]]
[metabase.models.revision :as revision] [metabase.models.metric :as metric :refer [Metric]]
[metabase.models.serialization.hash :as serdes.hash] [metabase.models.revision :as revision]
[metabase.models.table :refer [Table]] [metabase.models.serialization.hash :as serdes.hash]
[metabase.test :as mt] [metabase.models.table :refer [Table]]
[metabase.util :as u] [metabase.test :as mt]
[toucan.db :as db]) [toucan.db :as db])
(:import java.time.LocalDateTime)) (:import
(java.time LocalDateTime)))
(def ^:private metric-defaults (def ^:private metric-defaults
{:description nil {:description nil
...@@ -20,29 +21,6 @@ ...@@ -20,29 +21,6 @@
:entity_id true :entity_id true
:definition nil}) :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 (deftest update-test
(testing "Updating" (testing "Updating"
(mt/with-temp Metric [{:keys [id]} {:creator_id (mt/user->id :rasta)}] (mt/with-temp Metric [{:keys [id]} {:creator_id (mt/user->id :rasta)}]
......
(ns metabase.models.segment-test (ns metabase.models.segment-test
(:require [clojure.test :refer :all] (:require
[metabase.models.database :refer [Database]] [clojure.test :refer :all]
[metabase.models.revision :as revision] [metabase.models.database :refer [Database]]
[metabase.models.segment :as segment :refer [Segment]] [metabase.models.revision :as revision]
[metabase.models.serialization.hash :as serdes.hash] [metabase.models.segment :as segment :refer [Segment]]
[metabase.models.table :refer [Table]] [metabase.models.serialization.hash :as serdes.hash]
[metabase.test :as mt] [metabase.models.table :refer [Table]]
[metabase.util :as u] [metabase.test :as mt]
[toucan.db :as db]) [toucan.db :as db])
(:import java.time.LocalDateTime)) (:import
(java.time LocalDateTime)))
(defn- user-details
[username]
(dissoc (mt/fetch-user username) :date_joined :last_login))
(deftest update-test (deftest update-test
(testing "Updating" (testing "Updating"
...@@ -31,28 +28,6 @@ ...@@ -31,28 +28,6 @@
(is (= true (is (= true
(db/update! Segment id {:creator_id (mt/user->id :rasta)}))))))) (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 (deftest serialize-segment-test
(mt/with-temp* [Database [{database-id :id}] (mt/with-temp* [Database [{database-id :id}]
Table [{table-id :id} {:db_id database-id}] Table [{table-id :id} {:db_id database-id}]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment