diff --git a/app/controllers/avo/search_controller.rb b/app/controllers/avo/search_controller.rb index d36f56fee..1aa284050 100644 --- a/app/controllers/avo/search_controller.rb +++ b/app/controllers/avo/search_controller.rb @@ -9,14 +9,22 @@ class SearchController < ApplicationController before_action :set_resource, only: :show def show - render json: search_resources([resource]) + render json: search_resources([resource], request:) rescue => error render_error _label: error.message end + def process_results(results, request:) + results + end + private - def search_resources(resources) + def search_resources(resources, request: nil) + process_results search_results(resources, request:), request: + end + + def search_results(resources, request: nil) resources .map do |resource| # Apply authorization diff --git a/lib/avo/resources/resource_manager.rb b/lib/avo/resources/resource_manager.rb index 48b9eb037..8eada1bd1 100644 --- a/lib/avo/resources/resource_manager.rb +++ b/lib/avo/resources/resource_manager.rb @@ -100,6 +100,15 @@ def get_resource_by_name(name) get_resource name.singularize.camelize end + # Returns the Avo resource by singular snake_cased name + # + # get_resource_by_name('z posts') => instance of Avo::Resources::ZPost + def get_resource_by_plural_name(name) + resources.find do |resource| + resource.plural_name == name + end + end + # Returns the Avo resource by singular snake_cased name # From all the resources that use the same model_class, it will fetch the first one in alphabetical order #