module Nextable::DB

Private Instance Methods

field_is_string?() click to toggle source

Utility ###

# File lib/nextable/db.rb, line 65
def field_is_string?
  self.class.columns_hash[@field].type == :string
end
first_non_nil() click to toggle source
# File lib/nextable/db.rb, line 16
def first_non_nil
  @scope.where("? IS NOT NULL", @field)
end
greater_field_params() click to toggle source
# File lib/nextable/db.rb, line 28
def greater_field_params
  if field_is_string?
    ["lower(#{@field}) > ?", self.send(@field).downcase]
  else
    ["#{@field} > ?", self.send(@field)]
  end
end
greater_id_params() click to toggle source
# File lib/nextable/db.rb, line 20
def greater_id_params
  if field_is_string?
    ["? = ? AND id > ?", @field.downcase, self.send(@field).downcase, id]
  else
    ["#{@field} = ? AND id > ?", self.send(@field), id]
  end
end
last_non_nil() click to toggle source
# File lib/nextable/db.rb, line 44
def last_non_nil
  @scope.where("? IS NOT NULL")
end
lesser_field_params() click to toggle source
# File lib/nextable/db.rb, line 56
def lesser_field_params
  if field_is_string?
    ["lower(#{@field}) < ?", self.send(@field).downcase]
  else
    ["#{@field} < ?", self.send(@field)]
  end
end
lesser_id_params() click to toggle source
# File lib/nextable/db.rb, line 48
def lesser_id_params
  if field_is_string?
    ["lower(#{@field}) = ? AND id < ?", self.send(@field).downcase, id]
  else
    ["#{@field} = ? AND id < ?", self.send(@field), id]
  end
end
next_nil() click to toggle source

next_record helpers

# File lib/nextable/db.rb, line 12
def next_nil
  @scope.where("? IS NULL AND id > ?", @field, id).order(:id).first
end
prev_nil() click to toggle source

previous_record helpers

# File lib/nextable/db.rb, line 40
def prev_nil
  @scope.where("? IS NULL AND id < ?", id).order(id: :desc).first
end