class ParamsReady::Query::RelationParameterBuilder

Constants

DEFAULT_LIMIT

Public Class Methods

instance(name, altn: nil) click to toggle source
# File lib/params_ready/query/relation.rb, line 263
def self.instance(name, altn: nil)
  new RelationDefinition.new(name, altn: altn)
end

Public Instance Methods

join_table(arel_table, type, &block) click to toggle source
# File lib/params_ready/query/relation.rb, line 291
def join_table(arel_table, type, &block)
  join = Join.new arel_table, type, &block
  join.freeze
  @definition.add_join(join)
end
order(&proc) click to toggle source
# File lib/params_ready/query/relation.rb, line 284
def order(&proc)
  ordering_builder = @definition.init_ordering_builder(empty: false)
  ordering_builder.instance_eval(&proc) unless proc.nil?
  ordering = ordering_builder.build
  add ordering
end
paginate(limit = DEFAULT_LIMIT, max_limit = nil, method: :offset, &block) click to toggle source
# File lib/params_ready/query/relation.rb, line 270
def paginate(limit = DEFAULT_LIMIT, max_limit = nil, method: :offset, &block)
  case method
  when :offset
    raise ParamsReadyError, 'Block not expected' unless block.nil?
    add Pagination::OffsetPaginationDefinition.new(0, limit, max_limit).finish
  when :keyset
    ordering_builder = @definition.init_ordering_builder(empty: true)
    rcpb = Pagination::KeysetPaginationBuilder.new ordering_builder, limit, max_limit
    add rcpb.build(&block)
  else
    raise "Unimplemented pagination method '#{method}'"
  end
end