class MetaModel::Record::Model
Attributes
associations[R]
name[R]
properties[R]
Public Class Methods
new(name)
click to toggle source
# File lib/metamodel/record/model.rb, line 8 def initialize(name) @name = name.to_s.camelize @properties = [] @associations = [] end
Public Instance Methods
build_table()
click to toggle source
# File lib/metamodel/record/model.rb, line 66 def build_table table = "CREATE TABLE #{table_name}" main_sql = @properties.map do |property| result = "#{property.name.underscore} #{property.database_type}" result << " PRIMARY KEY" if property.is_primary? result << " UNIQUE" if property.is_unique? result << " DEFAULT #{property.default_value}" if property.has_default_value? result end # foreign_sql = @properties.map do |property| # next unless property.is_foreign? # reference_table_name = property.type.tableize # "FOREIGN KEY(#{property.name}) REFERENCES #{reference_table_name}(privateId)" # end table + "(private_id INTEGER PRIMARY KEY, #{(main_sql).compact.join(", ")});" end
contains?(property)
click to toggle source
# File lib/metamodel/record/model.rb, line 14 def contains?(property) @properties.select { |prop| prop.name == property }.size > 0 end
foreign_id()
click to toggle source
# File lib/metamodel/record/model.rb, line 26 def foreign_id "#{name}Id".camelize(:lower) end
hash_value()
click to toggle source
# File lib/metamodel/record/model.rb, line 38 def hash_value self.hash.to_s(16) end
properties_exclude_id()
click to toggle source
# File lib/metamodel/record/model.rb, line 18 def properties_exclude_id properties_exclude_property "id" end
properties_exclude_property(property)
click to toggle source
# File lib/metamodel/record/model.rb, line 22 def properties_exclude_property(property) @properties.select { |element| element.name != property } end
property_exclude_id_key_type_pairs(use_default_value = false)
click to toggle source
# File lib/metamodel/record/model.rb, line 58 def property_exclude_id_key_type_pairs(use_default_value = false) key_type_pairs_with_property properties_exclude_id, use_default_value end
property_exclude_id_key_value_pairs(cast = false)
click to toggle source
# File lib/metamodel/record/model.rb, line 50 def property_exclude_id_key_value_pairs(cast = false) key_value_pairs_with_property properties_exclude_id, cast end
property_key_type_pairs(use_default_value = false)
click to toggle source
# File lib/metamodel/record/model.rb, line 54 def property_key_type_pairs(use_default_value = false) key_type_pairs_with_property @properties, use_default_value end
property_key_type_pairs_without_property(property)
click to toggle source
# File lib/metamodel/record/model.rb, line 62 def property_key_type_pairs_without_property(property) key_type_pairs_with_property @properties.select { |element| element.name != property } end
property_key_value_pairs(cast = false)
click to toggle source
# File lib/metamodel/record/model.rb, line 42 def property_key_value_pairs(cast = false) key_value_pairs_with_property @properties, cast end
property_key_value_pairs_without_property(property)
click to toggle source
# File lib/metamodel/record/model.rb, line 46 def property_key_value_pairs_without_property(property) key_value_pairs_with_property @properties.select { |element| element.name != property } end
relation_name()
click to toggle source
# File lib/metamodel/record/model.rb, line 34 def relation_name "#{name}Relation" end
table_name()
click to toggle source
# File lib/metamodel/record/model.rb, line 30 def table_name name.tableize end
Private Instance Methods
key_type_pairs_with_property(properties, use_default_value = false)
click to toggle source
# File lib/metamodel/record/model.rb, line 96 def key_type_pairs_with_property(properties, use_default_value = false) properties.enum_for(:each_with_index).map do |property, index| has_default_value = property.has_default_value? default_value = property.type_without_optional == "String" ? "\"#{property.default_value}\"" : property.default_value result = "#{property.name}: #{property.type.to_s}#{if has_default_value then " = " + "#{default_value}" end}" result = "#{property.name}: #{property.type.to_s} = #{property.type_without_optional}DefaultValue" if use_default_value result end.join(", ") end
key_value_pairs_with_property(properties, cast = false)
click to toggle source
# File lib/metamodel/record/model.rb, line 86 def key_value_pairs_with_property(properties, cast = false) properties.map do |property| if cast "#{property.name}: #{property.type_without_optional}(#{property.name})" else "#{property.name}: #{property.name}" end end.join(", ") end