Skip to content
Snippets Groups Projects
Commit 1e3348f9 authored by Cam Saül's avatar Cam Saül
Browse files

Fix card favorite status returned by GET /api/card :sob:

parent 993c48be
No related branches found
No related tags found
No related merge requests found
......@@ -31,7 +31,7 @@
(defn- hydrate-favorites
"Efficiently add `favorite` status for a large collection of `Cards`."
[cards]
(let [favorite-card-ids (set (sel :many :field [CardFavorite :card_id], :owner_id *current-user-id*, :id [in (map :id cards)]))]
(let [favorite-card-ids (set (sel :many :field [CardFavorite :card_id], :owner_id *current-user-id*, :card_id [in (map :id cards)]))]
(for [card cards]
(assoc card :favorite (contains? favorite-card-ids (:id card))))))
......@@ -48,9 +48,10 @@
(defn- cards:fav
"Return all `Cards` favorited by the current user."
[]
(->> (hydrate (sel :many [CardFavorite :card_id], :owner_id *current-user-id*, :archived false)
(->> (hydrate (sel :many [CardFavorite :card_id], :owner_id *current-user-id*)
:card)
(map :card)
(filter (complement :archived))
(sort-by :name)))
(defn- cards:database
......
......@@ -5,6 +5,7 @@
[metabase.http-client :refer :all]
[metabase.driver.query-processor.expand :as ql]
(metabase.models [card :refer [Card]]
[card-favorite :refer [CardFavorite]]
[card-label :refer [CardLabel]]
[common :as common]
[database :refer [Database]]
......@@ -100,6 +101,16 @@
#{card-2-id card-3-id}
(set (map :id ((user->client :rasta) :get 200 "card", :f :archived))))
;;; Filter by `fav`
(expect-with-temp [Card [{card-id-1 :id}]
Card [{card-id-2 :id}]
Card [{card-id-3 :id}]
CardFavorite [_ {:card_id card-id-1, :owner_id (user->id :rasta)}]
CardFavorite [_ {:card_id card-id-2, :owner_id (user->id :crowberto)}]]
[{:id card-id-1, :favorite true}]
(for [card ((user->client :rasta) :get 200 "card", :f :fav)]
(select-keys card [:id :favorite])))
;;; Filter by labels
(expect-with-temp [Card [{card-1-id :id}]
Card [{card-2-id :id}]
......@@ -197,7 +208,8 @@
~@body))
;; Can we update a Card's archived status?
(defn- x []
(expect
[false true false]
(with-temp-card [{:keys [id]}]
(let [archived? (fn [] (:archived (Card id)))
set-archived! (fn [archived]
......
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