Update users_controller.rb

More efficient way of denoting favorited parties.
This commit is contained in:
Justin Edmund 2025-02-09 18:33:19 -08:00
parent f89b21c253
commit 9fdce28253

View file

@ -58,17 +58,19 @@ module Api
conditions = build_conditions conditions = build_conditions
conditions[:user_id] = @user.id conditions[:user_id] = @user.id
parties = Party favorites_query = "EXISTS (SELECT 1 FROM favorites WHERE favorites.party_id = parties.id AND favorites.user_id = #{current_user&.id || 'NULL'}) AS is_favorited"
.where(conditions) parties = Party.where(conditions)
.where(name_quality) .where(name_quality)
.where(user_quality) .where(user_quality)
.where(original) .where(original)
.where(privacy) .where(privacy)
.includes(:favorites)
.select(Party.arel_table[Arel.star])
.select(
Arel.sql(favorites_query)
)
.order(created_at: :desc) .order(created_at: :desc)
.paginate(page: request.params[:page], per_page: COLLECTION_PER_PAGE) .paginate(page: request.params[:page], per_page: COLLECTION_PER_PAGE)
.each do |party|
party.favorited = current_user ? party.is_favorited(current_user) : false
end
count = Party.where(conditions).count count = Party.where(conditions).count