From df188ed789a98102a3521925c72bc1f110b4436e Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Thu, 24 Aug 2023 22:14:02 -0700 Subject: [PATCH] Note to self: Implement user editing by admins --- app/controllers/api/v1/users_controller.rb | 75 +++++++++++++--------- 1 file changed, 43 insertions(+), 32 deletions(-) diff --git a/app/controllers/api/v1/users_controller.rb b/app/controllers/api/v1/users_controller.rb index b1afff2..70503ec 100644 --- a/app/controllers/api/v1/users_controller.rb +++ b/app/controllers/api/v1/users_controller.rb @@ -41,6 +41,8 @@ module Api render_validation_error_response(@user) end + # TODO: Allow admins to update other users + def update render json: UserBlueprint.render(@user, view: :minimal) if @user.update(user_params) end @@ -57,13 +59,13 @@ module Api conditions[:user_id] = @user.id parties = Party - .where(conditions) - .where(name_quality) - .where(user_quality) - .where(original) - .order(created_at: :desc) - .paginate(page: request.params[:page], per_page: COLLECTION_PER_PAGE) - .each do |party| + .where(conditions) + .where(name_quality) + .where(user_quality) + .where(original) + .order(created_at: :desc) + .paginate(page: request.params[:page], per_page: COLLECTION_PER_PAGE) + .each do |party| party.favorited = current_user ? party.is_favorited(current_user) : false end @@ -98,7 +100,7 @@ module Api unless params['recency'].blank? start_time = (DateTime.current - params['recency'].to_i.seconds) - .to_datetime.beginning_of_day + .to_datetime.beginning_of_day end min_characters_count = params['characters_count'].blank? ? DEFAULT_MIN_CHARACTERS : params['characters_count'].to_i @@ -113,9 +115,18 @@ module Api hash[:created_at] = start_time..DateTime.current unless params['recency'].blank? # Advanced filters: Team parameters - hash[:full_auto] = params['full_auto'].to_i unless params['full_auto'].blank? || params['full_auto'].to_i == -1 - hash[:auto_guard] = params['auto_guard'].to_i unless params['auto_guard'].blank? || params['auto_guard'].to_i == -1 - hash[:charge_attack] = params['charge_attack'].to_i unless params['charge_attack'].blank? || params['charge_attack'].to_i == -1 + unless params['full_auto'].blank? || params['full_auto'].to_i == -1 + hash[:full_auto] = +params['full_auto'].to_i + end + unless params['auto_guard'].blank? || params['auto_guard'].to_i == -1 + hash[:auto_guard] = +params['auto_guard'].to_i + end + unless params['charge_attack'].blank? || params['charge_attack'].to_i == -1 + hash[:charge_attack] = +params['charge_attack'].to_i + end # Turn count of 0 will not be displayed, so disallow on the frontend or set default to 1 # How do we do the same for button count since that can reasonably be 1? @@ -131,38 +142,38 @@ module Api end def original - unless params.key?('original') || params['original'].blank? || params['original'] == '0' - "source_party_id IS NULL" - end + return if params.key?('original') || params['original'].blank? || params['original'] == '0' + + 'source_party_id IS NULL' end def user_quality - unless params.key?('user_quality') || params[:user_quality].nil? || params[:user_quality] == "0" - "user_id IS NOT NULL" - end + return if params.key?('user_quality') || params[:user_quality].nil? || params[:user_quality] == '0' + + 'user_id IS NOT NULL' end def name_quality low_quality = [ - "Untitled", - "Remix of Untitled", - "Remix of Remix of Untitled", - "Remix of Remix of Remix of Untitled", - "Remix of Remix of Remix of Remix of Untitled", - "Remix of Remix of Remix of Remix of Remix of Untitled", - "無題", - "無題のリミックス", - "無題のリミックスのリミックス", - "無題のリミックスのリミックスのリミックス", - "無題のリミックスのリミックスのリミックスのリミックス", - "無題のリミックスのリミックスのリミックスのリミックスのリミックス" + 'Untitled', + 'Remix of Untitled', + 'Remix of Remix of Untitled', + 'Remix of Remix of Remix of Untitled', + 'Remix of Remix of Remix of Remix of Untitled', + 'Remix of Remix of Remix of Remix of Remix of Untitled', + '無題', + '無題のリミックス', + '無題のリミックスのリミックス', + '無題のリミックスのリミックスのリミックス', + '無題のリミックスのリミックスのリミックスのリミックス', + '無題のリミックスのリミックスのリミックスのリミックスのリミックス' ] joined_names = low_quality.map { |name| "'#{name}'" }.join(',') - unless params.key?('name_quality') || params[:name_quality].nil? || params[:name_quality] == "0" - "name NOT IN (#{joined_names})" - end + return if params.key?('name_quality') || params[:name_quality].nil? || params[:name_quality] == '0' + + "name NOT IN (#{joined_names})" end # Specify whitelisted properties that can be modified.