class Bartleby::Relation

Public Class Methods

new(model_class_name) click to toggle source
# File lib/bartleby/relation.rb, line 5
def initialize(model_class_name)
  @model_class_name = model_class_name
  @cache = nil
  initialize_select_field
end

Public Instance Methods

[](index) click to toggle source
# File lib/bartleby/relation.rb, line 72
def [](index)
  load if @cache.nil?
  @cache[index]
end
each(&prc) click to toggle source
# File lib/bartleby/relation.rb, line 77
def each(&prc)
  load if @cache.nil?
  @cache.each(&prc)
end
execute_query() click to toggle source
# File lib/bartleby/relation.rb, line 11
def execute_query
  Connection.execute(query, params)
end
from_field() click to toggle source
# File lib/bartleby/relation.rb, line 50
def from_field
  @from_field ||= { model_class.table_name }
end
generate_select_field() click to toggle source
# File lib/bartleby/relation.rb, line 44
def generate_select_field
  select = []
  select_field.each { |table, column| select.push "#{table}.#{column}"}
  select.join(", ")
end
having_field() click to toggle source
# File lib/bartleby/relation.rb, line 64
def having_field
  @having_field ||= {}
end
load() click to toggle source
# File lib/bartleby/relation.rb, line 82
def load
  @cache = query_results
end
model_class() click to toggle source
# File lib/bartleby/relation.rb, line 15
def model_class
  Object.constant_get(@model_class_name)
end
params() click to toggle source
# File lib/bartleby/relation.rb, line 68
def params
  @params ||= {}
end
parse(results) click to toggle source
# File lib/bartleby/relation.rb, line 86
def parse(results)
  results.map { |result| model_class.new(result) }
end
query() click to toggle source
# File lib/bartleby/relation.rb, line 23
    def query
      <<-SQL
        SELECT
          #{generate_select_field}
        FROM
          #{generate_from_field}
      SQL
        #{generate_joins}
        #{generate_where_field}
        #{generate_group_by_field}
        #{generate_having_field}
    end
query_results() click to toggle source
# File lib/bartleby/relation.rb, line 19
def query_results
  parse(execute_query)
end
select(options = {}) click to toggle source
# File lib/bartleby/relation.rb, line 36
def select(options = {})

end
select_field() click to toggle source
# File lib/bartleby/relation.rb, line 40
def select_field
  @select_field ||= { model_class.table_name => :* }
end
where_field() click to toggle source
# File lib/bartleby/relation.rb, line 54
def where_field
  @where_field ||= {}
end