diff --git a/src/metabase/driver/generic_sql/metadata.clj b/src/metabase/driver/generic_sql/metadata.clj new file mode 100644 index 0000000000000000000000000000000000000000..19df7736e600b25638ee55377fc7441931563cc3 --- /dev/null +++ b/src/metabase/driver/generic_sql/metadata.clj @@ -0,0 +1,23 @@ +(ns metabase.driver.generic-sql.metadata) + +;; TODO - These implementations are wack. We should just use korma to do this instead of raw SQL + +(defn field-count + [{:keys [db table name] :as field}] + (-> ((:native-query @db) + (format "SELECT COUNT(\"%s\".\"%s\") FROM \"%s\"" + (:name (table)) + name + (:name (table)))) + first + :count)) + +(defn field-distinct-count + [{:keys [db table name] :as field}] + (-> ((:native-query @db) + (format "SELECT COUNT(DISTINCT \"%s\".\"%s\") FROM \"%s\"" + (:name (table)) + name + (:name (table)))) + first + :count)) diff --git a/src/metabase/driver/h2/metadata.clj b/src/metabase/driver/h2/metadata.clj new file mode 100644 index 0000000000000000000000000000000000000000..aec44bf192900d763ede880f1714e704a2de2152 --- /dev/null +++ b/src/metabase/driver/h2/metadata.clj @@ -0,0 +1,9 @@ +(ns metabase.driver.h2.metadata + (:require [metabase.driver.generic-sql.metadata :as generic] + [metabase.driver.metadata :as driver])) + +(defmethod driver/field-count :h2 [field] + (generic/field-count field)) + +(defmethod driver/field-distinct-count :h2 [field] + (generic/field-distinct-count field)) diff --git a/src/metabase/driver/postgres/metadata.clj b/src/metabase/driver/postgres/metadata.clj index 09c6dadbec2e05bbd6f00bb4b83ddeea22ae0b39..ea92d33314147fb1cc7514bf5fae4610053869c8 100644 --- a/src/metabase/driver/postgres/metadata.clj +++ b/src/metabase/driver/postgres/metadata.clj @@ -1,25 +1,9 @@ (ns metabase.driver.postgres.metadata - (:require [metabase.driver.metadata :refer [field-count field-distinct-count]])) + (:require [metabase.driver.generic-sql.metadata :as generic] + [metabase.driver.metadata :as driver])) -;; TODO - These implementations are wack. We should just use korma to do this -;; and these should be moved to the `generic-sql` driver +(defmethod driver/field-count :postgres [field] + (generic/field-count field)) -(defmethod field-count :postgres - [{:keys [db table name] :as field}] - (-> ((:native-query @db) - (format "SELECT COUNT(\"%s\".\"%s\") FROM \"%s\"" - (:name (table)) - name - (:name (table)))) - first - :count)) - -(defmethod field-distinct-count :postgres - [{:keys [db table name] :as field}] - (-> ((:native-query @db) - (format "SELECT COUNT(DISTINCT \"%s\".\"%s\") FROM \"%s\"" - (:name (table)) - name - (:name (table)))) - first - :count)) +(defmethod driver/field-distinct-count :postgres [field] + (generic/field-distinct-count field))