class GraphQL::FancyLoader::PaginationFilter
Public Class Methods
new(query, before: nil, after: nil, first: nil, last: nil)
click to toggle source
# File lib/graphql/fancy_loader/pagination_filter.rb, line 4 def initialize(query, before: nil, after: nil, first: nil, last: nil) @query = query @before = before @after = after @first = first @last = last end
Public Instance Methods
arel()
click to toggle source
# File lib/graphql/fancy_loader/pagination_filter.rb, line 12 def arel [ after_filter, before_filter, first_filter, last_filter ].compact.inject(&:and) end
Private Instance Methods
after_filter()
click to toggle source
# File lib/graphql/fancy_loader/pagination_filter.rb, line 31 def after_filter return unless @after row.gt(@after) end
before_filter()
click to toggle source
# File lib/graphql/fancy_loader/pagination_filter.rb, line 37 def before_filter return unless @before row.lt(@before) end
count()
click to toggle source
# File lib/graphql/fancy_loader/pagination_filter.rb, line 27 def count @count ||= @query[:total_count] end
first_filter()
click to toggle source
# File lib/graphql/fancy_loader/pagination_filter.rb, line 43 def first_filter return unless @first if @after row.lteq(@after + @first) else row.lteq(@first) end end
last_filter()
click to toggle source
# File lib/graphql/fancy_loader/pagination_filter.rb, line 53 def last_filter return unless @last if @before row.gteq(@before - @last) else row.gt(Arel::Nodes::Subtraction.new(count, @last)) end end
row()
click to toggle source
# File lib/graphql/fancy_loader/pagination_filter.rb, line 23 def row @row ||= @query[:row_number] end