Class: ParamsReady::Query::RelationParameterBuilder
Constant Summary
collapse
- DEFAULT_LIMIT =
10
Class Method Summary
collapse
Instance Method Summary
collapse
#add
Methods inherited from Builder
#helper
#build, define_parameter, define_registered_parameter, #fetch, #include, #initialize, #open?, register, resolve
#human_string, #registry
Class Method Details
.instance(name, altn: nil) ⇒ Object
263
264
265
|
# File 'lib/params_ready/query/relation.rb', line 263
def self.instance(name, altn: nil)
new RelationDefinition.new(name, altn: altn)
end
|
Instance Method Details
#join_table(arel_table, type, &block) ⇒ Object
291
292
293
294
295
|
# 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) ⇒ Object
284
285
286
287
288
289
|
# 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) ⇒ Object
270
271
272
273
274
275
276
277
278
279
280
281
282
|
# 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 ::.new(0, limit, max_limit).finish
when :keyset
ordering_builder = @definition.init_ordering_builder(empty: true)
rcpb = ::.new ordering_builder, limit, max_limit
add rcpb.build(&block)
else
raise "Unimplemented pagination method '#{method}'"
end
end
|