From 7b71fecdf51f2b054a790923d57f40197c736b83 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Feb 2026 18:04:16 +0000 Subject: [PATCH 1/2] Initial plan From 46353fc9060a916cb41920ebc80a462748ac237f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Feb 2026 18:09:21 +0000 Subject: [PATCH 2/2] Remove old workshops and resources search endpoints and Search class Co-authored-by: maebeale <7607813+maebeale@users.noreply.github.com> --- app/assets/javascripts/components/side_nav.js | 6 -- app/controllers/resources_controller.rb | 17 ----- app/controllers/workshops_controller.rb | 35 ---------- app/services/search.rb | 70 ------------------- config/routes.rb | 9 +-- 5 files changed, 1 insertion(+), 136 deletions(-) delete mode 100644 app/services/search.rb diff --git a/app/assets/javascripts/components/side_nav.js b/app/assets/javascripts/components/side_nav.js index 15d0ac9b9..7476a060b 100644 --- a/app/assets/javascripts/components/side_nav.js +++ b/app/assets/javascripts/components/side_nav.js @@ -45,9 +45,6 @@ function setActiveMenuItem() { link = $('.js-resources'); } break; - case '/resources/search': - link = $('.js-resources'); - break; case '/resources/' + digit(path): link = $('.js-resources'); break; @@ -61,9 +58,6 @@ function setActiveMenuItem() { case '/workshops/' + digit(path): link = $('.js-search'); break; - case '/workshops/search': - link = $('.js-search'); - break; case '/workshops/new': case '/workshop_logs/new': subMenu = $('.js-report'); diff --git a/app/controllers/resources_controller.rb b/app/controllers/resources_controller.rb index db3d8e4c7..a78f3900e 100644 --- a/app/controllers/resources_controller.rb +++ b/app/controllers/resources_controller.rb @@ -121,13 +121,6 @@ def destroy redirect_to resources_path, notice: "Resource was successfully destroyed." end - def search - authorize! - process_search - @sortable_fields = Resource::PUBLISHED_KINDS - render :index - end - def download @resource = Resource.find(params[:resource_id]) authorize! @resource @@ -180,12 +173,6 @@ def assign_associations(resource) resource.save! end - def process_search - @params = search_params - @query = search_params[:query] - @resources = Search.new.search(search_params, current_user).paginate(page: params[:search][:page]) - end - def resource_id_param params[:id] end @@ -211,8 +198,4 @@ def load_forms end end end - - def search_params - params[:search] - end end diff --git a/app/controllers/workshops_controller.rb b/app/controllers/workshops_controller.rb index d9c650886..85d242935 100644 --- a/app/controllers/workshops_controller.rb +++ b/app/controllers/workshops_controller.rb @@ -173,25 +173,6 @@ def update end - def search - @params = params[:search] - @query = params[:search][:query] if @params - @workshops = Search.new.search(@params, current_user) - - if @workshops.paginate(page: params[:search][:page], per_page: workshops_per_page).empty? - @workshops = @workshops.paginate(page: 1, per_page: workshops_per_page) - else - @workshops = @workshops.paginate(page: params[:search][:page], per_page: workshops_per_page) - end - - authorize! @workshops - - load_sortable_fields - load_metadata - - render :index - end - private def set_show @@ -241,14 +222,6 @@ def log_workshop_error(action, error) Rails.logger.error "Workshop #{action} failed: #{error.class} - #{error.message}\n#{error.backtrace.join("\n")}" end - def workshops_per_page - view_all_workshops? ? @workshops.published.size : 12 - end - - def view_all_workshops? - params[:search][:view_all] == "1" - end - def workshop_params params.require(:workshop).permit( :title, :featured, :published, @@ -323,12 +296,4 @@ def workshop_params :position, :_destroy ] ) end - - def load_sortable_fields - @sortable_fields = WindowsType.where(short_name: "COMBINED") - end - - def load_metadata - @metadata = CategoryType.includes(:categories).published.decorate - end end diff --git a/app/services/search.rb b/app/services/search.rb deleted file mode 100644 index 4b6c0bb81..000000000 --- a/app/services/search.rb +++ /dev/null @@ -1,70 +0,0 @@ -class Search - attr_accessor :params - def initialize - end - - def search(params, user) - @params = params - queries = process_params(params) - klass = params[:type] ? params[:type].constantize : Workshop - results = process_queries(klass, queries, user) - sort(results, klass) - end - - private - - def process_queries(klass, queries, user) - results = [] - - if queries.any? - queries.each do |query| - category = Category.find_by_name(query) - sector = Sector.find_by_name(query) - - if category - results << category.workshops.published - elsif sector - results << sector.workshops.published - else - results.unshift(klass.search(query).for_search) - end - end - else - results << user.curriculum(klass).for_search - end - results.flatten.compact.uniq - end - - def sort(objects, klass) - return objects unless objects.any? - sort_bys = sortable_params.select { |k, v| v == "1" }.keys - - return objects unless sort_bys.any? - sorted = sort_bys.map(&:to_sym).map do |sort_by| - objects & klass.send("by_#{sort_by}") - end - - sort_flat = sorted.flatten.uniq(&:title) - - sort_flat.sort_by!(&:led_count).reverse! if sort_flat.any? && sort_flat[0].send(:led_count) && sort_bys.include?("led_count") - sort_flat.sort_by!(&:rating).reverse! if sort_flat.any? && sort_flat[0].class == Workshop && sort_flat[0].send(:rating) && sort_bys.include?("rating") - sort_flat - end - - def sortable_params - params[:sort_by] - end - - def process_params(params) - queries = [] - params.each do |param, value| - next if value.empty? || value == "0" || forbidden_params.include?(param) - param == "query" ? queries << value : queries << param - end - queries - end - - def forbidden_params - [ "sort_by", "type", "sortable_items", "page", "view_all" ] - end -end diff --git a/config/routes.rb b/config/routes.rb index 2c19c6d22..88e7690b9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -116,9 +116,6 @@ resources :resources do get :download - collection do - post :search - end end resources :sectors do collection do @@ -145,11 +142,7 @@ resources :workshop_log_creation_wizard resources :workshop_variation_ideas resources :workshop_variations - resources :workshops do - collection do - post :search - end - end + resources :workshops resources :workshop_mentions, only: [ :index ] resources :resource_mentions, only: [ :index ]