module Cassie::Statements::Statement::Pagination::Cursors::ClassMethods

Public Instance Methods

cursor_by(key) click to toggle source
# File lib/cassie/statements/statement/pagination/cursors.rb, line 38
def cursor_by(key)
  max_cursor key
  since_cursor key
end
max_cursor(key) click to toggle source
# File lib/cassie/statements/statement/pagination/cursors.rb, line 13
def max_cursor(key)
  include Cassie::Statements::Execution::Peeking
  self.partition_linker = Cassie::Statements::Execution::PartitionLinking::CursoringPolicy

  @max_cursor_key = key

  where(key,:lteq,
        value: :"max_#{key}",
        if: :max_cursor_enabled?)

  define_max_accessors(key)
end
max_cursor_key() click to toggle source
# File lib/cassie/statements/statement/pagination/cursors.rb, line 43
def max_cursor_key
  @max_cursor_key.to_s
end
since_cursor(key) click to toggle source
# File lib/cassie/statements/statement/pagination/cursors.rb, line 26
def since_cursor(key)
  include Cassie::Statements::Execution::Peeking

  @max_cursor_key = key

  where(key, :gt,
        value: :"since_#{key}",
        if: :since_cursor_enabled?)

  define_since_accessors(key)
end

Private Instance Methods

define_max_accessors(key) click to toggle source
# File lib/cassie/statements/statement/pagination/cursors.rb, line 49
def define_max_accessors(key)
  attr_accessor :max_cursor

  define_method :max_cursor_enabled? do
    !max_cursor.nil?
  end

  getter = :"max_#{key}"
  remove_method getter if method_defined?(getter)
  define_method getter do
    self.max_cursor
  end

  setter = :"max_#{key}="
  remove_method setter if method_defined?(setter)
  define_method setter do |val|
    self.max_cursor = val
  end
end
define_since_accessors(key) click to toggle source
# File lib/cassie/statements/statement/pagination/cursors.rb, line 69
def define_since_accessors(key)
  attr_accessor :since_cursor

  define_method :since_cursor_enabled? do
    !since_cursor.nil?
  end

  getter = :"since_#{key}"
  remove_method getter if method_defined?(getter)
  define_method getter do
    self.since_cursor
  end

  setter = :"since_#{key}="
  remove_method setter if method_defined?(setter)
  define_method setter do |val|
    self.since_cursor = val
  end
end