module Riveter::Query

Attributes

options[R]
query_filter[R]
relation[R]

Public Class Methods

new(query_filter, options={}) click to toggle source
# File lib/riveter/query.rb, line 9
def initialize(query_filter, options={})
  @query_filter = query_filter
  @options = options
  @relation = build_relation(@query_filter)
end

Public Instance Methods

find_each(&block) click to toggle source

enumerates the resultset in batch mode

# File lib/riveter/query.rb, line 16
def find_each(&block)
  relation.find_each_with_order(&block) if has_data?
end
has_data?() click to toggle source

override if necessary in derived classes

# File lib/riveter/query.rb, line 21
def has_data?
  @has_data ||= relation.count() > 0
end

Protected Instance Methods

build_relation(filter) click to toggle source

override in derived classes

# File lib/riveter/query.rb, line 28
def build_relation(filter)

  #
  # use the given filter to add conditions
  # to produce an ActiveRelation as the query
  #
  # E.g. filter.page #=> Model.all.page(filter.page)
  #

  raise NotImplementedError
end