(ns metabase.revisions.impl.card (:require [metabase.revisions.models.revision :as revision])) | |
(def ^:private excluded-columns-for-card-revision
#{:cache_invalidated_at
:created_at
:creator_id
:entity_id
:id
:initially_published_at
:last_used_at
:made_public_by_id
:metabase_version
:public_uuid
:updated_at
:view_count}) | |
(defmethod revision/revert-to-revision! :model/Card
[model id user-id serialized-card]
;; make sure we handle < 50 cards that had `:dataset` instead of `:type`
(let [serialized-card (cond-> serialized-card
(contains? serialized-card :dataset) (-> (dissoc :dataset)
(assoc :type (if (:dataset serialized-card) :model :question))))]
((get-method revision/revert-to-revision! :default) model id user-id serialized-card))) | |
Returns true if | (defn- model? [card] (= (keyword (:type card)) :model)) |
(defmethod revision/serialize-instance :model/Card
([instance]
(revision/serialize-instance :model/Card nil instance))
([_model _id instance]
(cond-> (apply dissoc instance excluded-columns-for-card-revision)
;; datasets should preserve edits to metadata
;; the type check only needed in tests because most test object does not include `type` key
(and (some? (:type instance)) (not (model? instance)))
(dissoc :result_metadata)))) | |