Class: MetaModel::Record::Model
- Inherits:
-
Object
- Object
- MetaModel::Record::Model
- Defined in:
- lib/metamodel/record/model.rb
Instance Attribute Summary collapse
-
#associations ⇒ Object
readonly
Returns the value of attribute associations.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#properties ⇒ Object
readonly
Returns the value of attribute properties.
Instance Method Summary collapse
- #build_table ⇒ Object
- #contains?(property) ⇒ Boolean
- #foreign_id ⇒ Object
- #hash_value ⇒ Object
-
#initialize(name) ⇒ Model
constructor
A new instance of Model.
- #properties_exclude_id ⇒ Object
- #properties_exclude_property(property) ⇒ Object
- #property_exclude_id_key_type_pairs(use_default_value = false) ⇒ Object
- #property_exclude_id_key_value_pairs(cast = false) ⇒ Object
- #property_key_type_pairs(use_default_value = false) ⇒ Object
- #property_key_type_pairs_without_property(property) ⇒ Object
- #property_key_value_pairs(cast = false) ⇒ Object
- #property_key_value_pairs_without_property(property) ⇒ Object
- #relation_name ⇒ Object
- #table_name ⇒ Object
Constructor Details
#initialize(name) ⇒ Model
Returns a new instance of Model.
8 9 10 11 12 |
# File 'lib/metamodel/record/model.rb', line 8 def initialize(name) @name = name.to_s.camelize @properties = [] @associations = [] end |
Instance Attribute Details
#associations ⇒ Object (readonly)
Returns the value of attribute associations.
6 7 8 |
# File 'lib/metamodel/record/model.rb', line 6 def associations @associations end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
4 5 6 |
# File 'lib/metamodel/record/model.rb', line 4 def name @name end |
#properties ⇒ Object (readonly)
Returns the value of attribute properties.
5 6 7 |
# File 'lib/metamodel/record/model.rb', line 5 def properties @properties end |
Instance Method Details
#build_table ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# 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) ⇒ Boolean
14 15 16 |
# File 'lib/metamodel/record/model.rb', line 14 def contains?(property) @properties.select { |prop| prop.name == property }.size > 0 end |
#foreign_id ⇒ Object
26 27 28 |
# File 'lib/metamodel/record/model.rb', line 26 def foreign_id "#{name}Id".camelize(:lower) end |
#hash_value ⇒ Object
38 39 40 |
# File 'lib/metamodel/record/model.rb', line 38 def hash_value self.hash.to_s(16) end |
#properties_exclude_id ⇒ Object
18 19 20 |
# File 'lib/metamodel/record/model.rb', line 18 def properties_exclude_id properties_exclude_property "id" end |
#properties_exclude_property(property) ⇒ Object
22 23 24 |
# 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) ⇒ Object
58 59 60 |
# 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) ⇒ Object
50 51 52 |
# 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) ⇒ Object
54 55 56 |
# 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) ⇒ Object
62 63 64 |
# 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) ⇒ Object
42 43 44 |
# 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) ⇒ Object
46 47 48 |
# 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 ⇒ Object
34 35 36 |
# File 'lib/metamodel/record/model.rb', line 34 def relation_name "#{name}Relation" end |
#table_name ⇒ Object
30 31 32 |
# File 'lib/metamodel/record/model.rb', line 30 def table_name name.tableize end |