Initial commit
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
require_dependency 'carto/controller_helper'
|
||||
|
||||
class Carto::Api::SearchPreviewController < ::Api::ApplicationController
|
||||
include Carto::ControllerHelper
|
||||
|
||||
ssl_required
|
||||
|
||||
before_filter :login_required
|
||||
before_filter :load_parameters
|
||||
|
||||
rescue_from StandardError, with: :rescue_from_standard_error
|
||||
rescue_from Carto::ParamCombinationInvalidError, with: :rescue_from_carto_error
|
||||
|
||||
DEFAULT_LIMIT = 4
|
||||
DEFAULT_TYPES = "derived,table,remote,tag".freeze
|
||||
VALID_TYPES = Carto::Visualization::VALID_TYPES + ["tag"]
|
||||
|
||||
def index
|
||||
searcher_params = { user: current_viewer, pattern: @pattern, types: @types, limit: @limit }
|
||||
searcher = Carto::DashboardPreviewSearcher.new(searcher_params)
|
||||
result = searcher.search
|
||||
|
||||
presenter_params = { dashboard_search_result: result, limit: @limit, current_viewer: current_viewer, context: self }
|
||||
presentation = Carto::Api::SearchPreviewPresenter.new(presenter_params).to_poro
|
||||
|
||||
render json: presentation
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def load_parameters
|
||||
@limit = params.fetch(:limit, DEFAULT_LIMIT).to_i
|
||||
@pattern = params[:q]
|
||||
|
||||
@types = params.fetch(:types, DEFAULT_TYPES).split(',')
|
||||
if (@types - VALID_TYPES).present?
|
||||
raise Carto::ParamCombinationInvalidError.new(:types, VALID_TYPES)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user