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