module Rollerskates::QueryHelper

Private Instance Methods

columns() click to toggle source
# File lib/rollerskates/orm/helpers/query_helper.rb, line 94
def columns
  all_columns = database.prepare query_statement
  all_columns.columns.map(&:to_sym)
end
create_columns() click to toggle source
# File lib/rollerskates/orm/helpers/query_helper.rb, line 23
def create_columns
  @create_parameters[:created_at] = Time.now.to_s
  @create_parameters[:updated_at] = Time.now.to_s
  @create_parameters.keys.map { |column| "'#{column}'" }.join(", ")
end
create_values() click to toggle source
# File lib/rollerskates/orm/helpers/query_helper.rb, line 29
def create_values
  @create_parameters.values.map { |value| "'#{value}'" }.join(", ")
end
data() click to toggle source
# File lib/rollerskates/orm/helpers/query_helper.rb, line 77
def data
  execute unless @result
  @data ||= if @type == :collection
              @result.map { |row| row_to_object(row) }
            elsif @type == :object
              row_to_object(@result.flatten)
            end
end
database() click to toggle source
# File lib/rollerskates/orm/helpers/query_helper.rb, line 9
def database
  @model.database
end
execute() click to toggle source
# File lib/rollerskates/orm/helpers/query_helper.rb, line 72
def execute
  sql = @query ? @query : query_statement
  @result = database.execute sql
end
from_phrase() click to toggle source
# File lib/rollerskates/orm/helpers/query_helper.rb, line 48
def from_phrase
  "FROM #{table_name}"
end
limit_phrase() click to toggle source
# File lib/rollerskates/orm/helpers/query_helper.rb, line 64
def limit_phrase
  " LIMIT #{@limit}" if @limit
end
method_missing(method, *_args) { |object| ... } click to toggle source
# File lib/rollerskates/orm/helpers/query_helper.rb, line 86
def method_missing(method, *_args)
  if block_given?
    data.each { |object| yield object }
    return true
  end
  data.send(method)
end
offset_phrase() click to toggle source
# File lib/rollerskates/orm/helpers/query_helper.rb, line 68
def offset_phrase
  " OFFSET #{@offset}" if @offset
end
order_phrase() click to toggle source
# File lib/rollerskates/orm/helpers/query_helper.rb, line 60
def order_phrase
  " ORDER BY #{@order}" if @order
end
query_statement() click to toggle source
# File lib/rollerskates/orm/helpers/query_helper.rb, line 13
def query_statement
  sql = "#{select_phrase} #{from_phrase}"
  sql  << where_phrase unless @columns.empty?
  sql  << order_phrase if @order
  sql  << limit_phrase if @limit
  sql  << offset_phrase if @offset

  sql
end
row_to_object(row) click to toggle source
# File lib/rollerskates/orm/helpers/query_helper.rb, line 99
def row_to_object(row)
  model_object = @model.new
  columns.each_with_index do |attribute, index|
    model_object.send("#{attribute}=", row[index])
  end
  model_object
end
select_phrase() click to toggle source
# File lib/rollerskates/orm/helpers/query_helper.rb, line 38
def select_phrase
  if @count
    "SELECT COUNT (*)"
  elsif @select
    "SELECT #{@select.flatten.join(', ')} "
  else
    "SELECT * "
  end
end
table_name() click to toggle source
# File lib/rollerskates/orm/helpers/query_helper.rb, line 5
def table_name
  @model.table_name
end
update_values() click to toggle source
# File lib/rollerskates/orm/helpers/query_helper.rb, line 33
def update_values
  @update_parameters[:updated_at] = Time.now.to_s
  @update_parameters.map { |key, value| "#{key}" << " = '#{value}'" }
end
where_phrase() click to toggle source
# File lib/rollerskates/orm/helpers/query_helper.rb, line 52
def where_phrase
  string = []
  @columns.uniq.each do |col|
    string << col.map { |key, value| "#{key}" << " = '#{value}'" }
  end
  " WHERE #{string.join(' AND ')}" unless @columns.empty?
end