Class: ParamsReady::Pagination::KeysetPaginationBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/params_ready/pagination/keyset_pagination.rb

Instance Method Summary collapse

Constructor Details

#initialize(ordering_builder, default_limit, max_limit = nil) ⇒ KeysetPaginationBuilder

Returns a new instance of KeysetPaginationBuilder.



213
214
215
216
217
218
219
220
221
222
223
# 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::StructParameterBuilder.send :new, definition
  @default = {
    limit: default_limit,
    direction: :aft,
    keyset: {}
  }
  @ordering_builder = ordering_builder
  @keyset = Parameter::StructParameterBuilder.instance(:keyset, altn: :ks)
end

Instance Method Details

#add_to_cursor(type, name, &block) ⇒ Object



239
240
241
242
243
244
# 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

#base64Object



235
236
237
# File 'lib/params_ready/pagination/keyset_pagination.rb', line 235

def base64
  @cursor_builder.marshal using: :base64
end

#build(&block) ⇒ Object



246
247
248
249
250
251
# 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) ⇒ Object



230
231
232
233
# 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) ⇒ Object



225
226
227
228
# 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