class Yaqb::QueryBuilders::Sort

Constants

DIRECTIONS

Public Class Methods

new(scope, params, presenter) click to toggle source
# File lib/yaqb/query_builders/sort.rb, line 8
def initialize(scope, params, presenter)
  @scope = scope
  @presenter = presenter
  @column = params[:sort]
  @direction = params[:dir]
end

Public Instance Methods

sort() click to toggle source
# File lib/yaqb/query_builders/sort.rb, line 15
def sort
  return @scope unless @column && @direction

  validate!('sort', @column) unless @presenter.sort_attributes.include?(@column)
  validate!('dir', @direction) unless DIRECTIONS.include?(@direction)

  @scope.order(Arel.sql("#{@column} #{@direction}"))
end

Private Instance Methods

validate!(name, value) click to toggle source
# File lib/yaqb/query_builders/sort.rb, line 26
def validate!(name, value)
  columns = @presenter.sort_attributes.join(', ')
  raise Errors::QueryBuilderError.new("#{name}=#{value}"),
        "Invalid sorting params. sort: (#{columns}), 'dir': asc, desc"
end