(ns metabase.lib.table (:require [metabase.lib.metadata :as lib.metadata] [metabase.lib.metadata.calculation :as lib.metadata.calculation] [metabase.lib.util :as lib.util] [metabase.util :as u] [metabase.util.humanization :as u.humanization] [metabase.util.i18n :as i18n])) | |
(defmethod lib.metadata.calculation/display-name-method :metadata/table
[_query _stage-number table-metadata _style]
(or (:display-name table-metadata)
(some->> (:name table-metadata)
(u.humanization/name->human-readable-name :simple)))) | |
(defmethod lib.metadata.calculation/metadata-method :metadata/table [_query _stage-number table-metadata] table-metadata) | |
(defmethod lib.metadata.calculation/describe-top-level-key-method :source-table
[query stage-number _k]
(let [{:keys [source-table]} (lib.util/query-stage query stage-number)]
(when source-table
(assert (integer? source-table)
(i18n/tru "Unexpected source table ID {0}" (pr-str source-table)))
(or (when-let [table-metadata (lib.metadata/table query source-table)]
(lib.metadata.calculation/display-name query stage-number table-metadata :long))
(i18n/tru "Table {0}" (pr-str source-table)))))) | |
Remove Fields that shouldn't be visible from the default Fields for a source Table. See [[metabase.query-processor.middleware.add-implicit-clauses/table->sorted-fields*]]. | (defn- remove-hidden-default-fields
[field-metadatas]
(remove (fn [{:keys [visibility-type], active? :active, :as _field-metadata}]
(or (false? active?)
(#{:sensitive :retired} (some-> visibility-type keyword))))
field-metadatas)) |
Sort default Fields for a source Table. See [[metabase.models.table/field-order-rule]]. | (defn- sort-default-fields
[field-metadatas]
(sort-by (fn [{field-name :name, :keys [position], :as _field-metadata}]
[(or position 0) (u/lower-case-en (or field-name ""))])
field-metadatas)) |
(defmethod lib.metadata.calculation/returned-columns-method :metadata/table
[query _stage-number table-metadata {:keys [unique-name-fn], :as _options}]
(when-let [field-metadatas (lib.metadata/fields query (:id table-metadata))]
(->> field-metadatas
remove-hidden-default-fields
sort-default-fields
(map (fn [col]
(assoc col
:lib/source :source/table-defaults
:lib/source-column-alias (:name col)
:lib/desired-column-alias (unique-name-fn (or (:name col) "")))))))) | |