class ParamsReady::Pagination::KeysetPaginationBuilder

Public Class Methods

new(ordering_builder, default_limit, max_limit = nil) click to toggle source
# File lib/params_ready/pagination/keyset_pagination.rb, line 213
def initialize(ordering_builder, default_limit, max_limit = nil)
  definition = KeysetPaginationDefinition.new(default_limit, max_limit)
  @cursor_builder = Parameter::HashParameterBuilder.send :new, definition
  @default = {
    limit: default_limit,
    direction: :aft,
    keyset: {}
  }
  @ordering_builder = ordering_builder
  @keyset = Parameter::HashParameterBuilder.instance(:keyset, altn: :ks)
end

Public Instance Methods

add_to_cursor(type, name, &block) click to toggle source
# File lib/params_ready/pagination/keyset_pagination.rb, line 239
def add_to_cursor(type, name, &block)
  @keyset.add type, name do
    optional
    include(&block) unless block.nil?
  end
end
base64() click to toggle source
# File lib/params_ready/pagination/keyset_pagination.rb, line 235
def base64
  @cursor_builder.marshal using: :base64
end
build(&block) click to toggle source
# File lib/params_ready/pagination/keyset_pagination.rb, line 246
def build(&block)
  instance_eval(&block)
  @cursor_builder.add @keyset.build
  @cursor_builder.default @default
  @cursor_builder.build
end
column(type, name, direction, **opts, &block) click to toggle source
# File lib/params_ready/pagination/keyset_pagination.rb, line 230
def column(type, name, direction, **opts, &block)
  add_to_cursor(type, name, &block)
  @ordering_builder.column name, direction, **opts
end
key(type, name, direction, &block) click to toggle source
# File lib/params_ready/pagination/keyset_pagination.rb, line 225
def key(type, name, direction, &block)
  add_to_cursor(type, name, &block)
  @ordering_builder.column name, direction, required: true, pk: true
end