Class: ParamsReady::Pagination::KeysetPaginationBuilder
- Inherits:
-
Object
- Object
- ParamsReady::Pagination::KeysetPaginationBuilder
- Defined in:
- lib/params_ready/pagination/keyset_pagination.rb
Instance Method Summary collapse
- #add_to_cursor(type, name, &block) ⇒ Object
- #base64 ⇒ Object
- #build(&block) ⇒ Object
- #column(type, name, direction, **opts, &block) ⇒ Object
-
#initialize(ordering_builder, default_limit, max_limit = nil) ⇒ KeysetPaginationBuilder
constructor
A new instance of KeysetPaginationBuilder.
- #key(type, name, direction, &block) ⇒ Object
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 |
#base64 ⇒ Object
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 |