class V1::SearchController < ApplicationController

  before_action :set_search

  # GET v1/search
  # GET v1/search.json
  def index
    begin
      render json: search_service.fetch, status: :ok
    rescue => e
      if e.message == "Invalid search"
        render json: @search.errors, status: :bad_request
      else
        render nothing: true, status: :internal_server_error
        puts e.message
        puts e.backtrace
      end
    end
  end

  # GET v1/search/autocomplete
  # GET v1/search/autocomplete.json
  def autocomplete
    begin
      render json: search_service.autocomplete, status: :ok
    rescue => e
      if e.message == "Invalid search"
        render json: @search.errors, status: :bad_request
      else
        render nothing: true, status: :internal_server_error
        puts e.message
        puts e.backtrace
      end
    end
  end

  private

  def set_search
    @search = Search.new(params)
  end

  def search_service
    @search_service ||= SearchService.new(@search, current_user)
  end

end