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)
.order(created_at: :desc) .includes(:favorites)
.paginate(page: request.params[:page], per_page: COLLECTION_PER_PAGE) .select(Party.arel_table[Arel.star])
.each do |party| .select(
party.favorited = current_user ? party.is_favorited(current_user) : false Arel.sql(favorites_query)
end )
.order(created_at: :desc)
.paginate(page: request.params[:page], per_page: COLLECTION_PER_PAGE)
count = Party.where(conditions).count count = Party.where(conditions).count
@ -101,7 +103,7 @@ module Api
unless params['recency'].blank? unless params['recency'].blank?
start_time = (DateTime.current - params['recency'].to_i.seconds) start_time = (DateTime.current - params['recency'].to_i.seconds)
.to_datetime.beginning_of_day .to_datetime.beginning_of_day
end end
min_characters_count = params['characters_count'].blank? ? DEFAULT_MIN_CHARACTERS : params['characters_count'].to_i min_characters_count = params['characters_count'].blank? ? DEFAULT_MIN_CHARACTERS : params['characters_count'].to_i