scinote-web/app/services/lists/base_service.rb

40 lines
891 B
Ruby
Raw Normal View History

# frozen_string_literal: true
module Lists
class BaseService
def initialize(raw_data, params, user: nil)
@raw_data = raw_data
@params = params
@user = user
end
def call
records = fetch_records
records = filter_records(records)
records = sort_records(records)
paginate_records(records)
end
private
def order_params
@order_params ||= @params.require(:order).permit(:column, :dir).to_h
end
def paginate_records(records)
records.page(@params[:page]).per(@params[:per_page])
end
def sort_direction(order_params)
order_params[:dir] == 'asc' ? 'ASC' : 'DESC'
end
def sort_records(records)
return records unless @params[:order]
sort_by = "#{sortable_columns[order_params[:column].to_sym]} #{sort_direction(order_params)}"
records.order(sort_by)
end
end
end