@@ -82,9 +82,19 @@ def serialize(self):
82
82
else :
83
83
result = [serialize_query (query , ** self .options ) for query in self .object_or_list ]
84
84
if self .options .get ("with_favorite_state" , True ):
85
- favorite_ids = models .Favorite .are_favorites (current_user .id , self .object_or_list )
85
+ queries = list (self .object_or_list )
86
+ favorites = models .Favorite .query .filter (
87
+ models .Favorite .object_id .in_ ([o .id for o in queries ]),
88
+ models .Favorite .object_type == "Query" ,
89
+ models .Favorite .user_id == current_user .id ,
90
+ )
91
+ favorites_dict = {fav .object_id : fav for fav in favorites }
92
+
86
93
for query in result :
87
- query ["is_favorite" ] = query ["id" ] in favorite_ids
94
+ favorite = favorites_dict .get (query ["id" ])
95
+ query ["is_favorite" ] = favorite is not None
96
+ if favorite :
97
+ query ["starred_at" ] = favorite .created_at
88
98
89
99
return result
90
100
@@ -263,9 +273,19 @@ def serialize(self):
263
273
else :
264
274
result = [serialize_dashboard (obj , ** self .options ) for obj in self .object_or_list ]
265
275
if self .options .get ("with_favorite_state" , True ):
266
- favorite_ids = models .Favorite .are_favorites (current_user .id , self .object_or_list )
267
- for obj in result :
268
- obj ["is_favorite" ] = obj ["id" ] in favorite_ids
276
+ dashboards = list (self .object_or_list )
277
+ favorites = models .Favorite .query .filter (
278
+ models .Favorite .object_id .in_ ([o .id for o in dashboards ]),
279
+ models .Favorite .object_type == "Dashboard" ,
280
+ models .Favorite .user_id == current_user .id ,
281
+ )
282
+ favorites_dict = {fav .object_id : fav for fav in favorites }
283
+
284
+ for query in result :
285
+ favorite = favorites_dict .get (query ["id" ])
286
+ query ["is_favorite" ] = favorite is not None
287
+ if favorite :
288
+ query ["starred_at" ] = favorite .created_at
269
289
270
290
return result
271
291
0 commit comments