Namespace for anything related to the Audit subsystem (aka Metabase Analytics) which needs to be accessible in the
OSS product. EE-only code is located in | (ns metabase.audit (:require [metabase.db :as mdb] [metabase.models.setting :refer [defsetting]] [toucan2.core :as t2])) |
NOTE: Constants like | |
ID of Audit DB which is loaded when running an EE build. | (def audit-db-id 13371337) |
A place to save the analytics-checksum, to check between app startups. If set to -1, skips the checksum process entirely to avoid calculating checksums in environments (e2e tests) where we don't care. | (defsetting last-analytics-checksum :type :integer :visibility :internal :audit :never :doc false :export? false) |
Default audit collection entity (instance analytics) id. | (def ^:private default-audit-collection-entity-id "vG58R8k-QddHWA7_47umn") |
Default custom reports entity id. | (def ^:private default-custom-reports-entity-id "okNLSZKdSxaoG58JSQY54") |
(def ^{:arglists '([checksum model entity-id]) :private true} memoized-select-audit-entity* (mdb/memoize-for-application-db (fn [checksum model entity-id] (when checksum (t2/select-one model :entity_id entity-id))))) | |
Returns the object from entity id and model. Memoizes from entity id. Should only be used for audit/pre-loaded objects. | (defn memoized-select-audit-entity [model entity-id] (memoized-select-audit-entity* (last-analytics-checksum) model entity-id)) |
Default custom reports collection. | (defn default-custom-reports-collection [] (memoized-select-audit-entity :model/Collection default-custom-reports-entity-id)) |
Default audit collection (instance analytics) collection. | (defn default-audit-collection [] (memoized-select-audit-entity :model/Collection default-audit-collection-entity-id)) |
Check if an id is one of the audit collection ids. | (defn is-collection-id-audit? [id] (contains? (set [(:id (default-audit-collection)) (:id (default-custom-reports-collection))]) id)) |
Check if an instance's parent collection is the audit collection. | (defn is-parent-collection-audit? [instance] (let [parent-id (:collection_id instance)] (and (some? parent-id) (is-collection-id-audit? parent-id)))) |