module Panda::Record::BaseHelper

Public Class Methods

included(base) click to toggle source
# File lib/panda/record/base_helper.rb, line 4
def self.included(base)
  class << base
    attr_reader :properties, :table

    private

    def column_names_with_constraints
      name_with_constraints = []
      properties.each do |column_name, constraints|
        query_string = []
        query_string << column_name.to_s
        parse_constraints(constraints, query_string)
        name_with_constraints << query_string.join(" ")
      end
      name_with_constraints
    end

    def parse_constraints(constraints, query_string)
      constraints.each do |attribute, value|
        query_string << send(attribute.to_s, value)
      end
    end

    def build_column_methods
      properties.keys.each(&method(:attr_accessor))
    end

    def get_model_object(row)
      return nil unless row
      model ||= new
      properties.keys.each_with_index do |key, index|
        model.send("#{key}=", row[index])
      end
      model
    end

    def type(value)
      value.to_s
    end

    def primary_key(is_primary)
      "PRIMARY KEY AUTOINCREMENT" if is_primary
    end

    def nullable(is_null)
      "NOT NULL" unless is_null
    end
  end
end

Private Instance Methods

columns_without_id() click to toggle source
# File lib/panda/record/base_helper.rb, line 77
def columns_without_id
  columns ||= self.class.properties.keys
  columns.delete(:id)
  columns
end
current_table_columns() click to toggle source
# File lib/panda/record/base_helper.rb, line 60
def current_table_columns
  columns_without_id.map(&:to_s).join(", ")
end
current_table_placeholders() click to toggle source
# File lib/panda/record/base_helper.rb, line 64
def current_table_placeholders
  (["?"] * (self.class.properties.keys.size - 1)).join(", ")
end
model_table() click to toggle source
# File lib/panda/record/base_helper.rb, line 56
def model_table
  self.class.table
end
record_values() click to toggle source
# File lib/panda/record/base_helper.rb, line 68
def record_values
  columns_without_id.map(&method(:send))
end
update_placeholders(columns = self.class.properties.keys) click to toggle source
# File lib/panda/record/base_helper.rb, line 72
def update_placeholders(columns = self.class.properties.keys)
  columns.delete(:id)
  columns.map { |column| "#{column} = ?" }.join(", ")
end