Class: Masamune::Schema::Row
- Inherits:
-
Object
- Object
- Masamune::Schema::Row
- Defined in:
- lib/masamune/schema/row.rb
Constant Summary collapse
- DEFAULT_ATTRIBUTES =
{ id: nil, values: {}, default: false, strict: true, parent: nil, debug: false }.freeze
Instance Attribute Summary collapse
-
#errors ⇒ Object
readonly
Returns the value of attribute errors.
Instance Method Summary collapse
- #headers ⇒ Object
- #id=(id) ⇒ Object
-
#initialize(opts = {}) ⇒ Row
constructor
A new instance of Row.
- #insert_columns ⇒ Object
- #insert_constraints ⇒ Object
- #insert_values ⇒ Object
- #invalid? ⇒ Boolean
- #name(column = nil) ⇒ Object
- #natural_keys ⇒ Object
- #parent=(parent) ⇒ Object
- #serialize ⇒ Object
- #sql_value(column) ⇒ Object
- #to_hash ⇒ Object
- #valid? ⇒ Boolean
- #validate! ⇒ Object
- #values=(values) ⇒ Object
Constructor Details
#initialize(opts = {}) ⇒ Row
Returns a new instance of Row.
41 42 43 44 45 46 47 48 |
# File 'lib/masamune/schema/row.rb', line 41 def initialize(opts = {}) @errors = Set.new opts.symbolize_keys! DEFAULT_ATTRIBUTES.merge(opts).each do |name, value| public_send("#{name}=", value) end self.id ||= :default if default end |
Instance Attribute Details
#errors ⇒ Object (readonly)
Returns the value of attribute errors.
39 40 41 |
# File 'lib/masamune/schema/row.rb', line 39 def errors @errors end |
Instance Method Details
#headers ⇒ Object
95 96 97 |
# File 'lib/masamune/schema/row.rb', line 95 def headers @columns.map { |_, column| column.name } end |
#id=(id) ⇒ Object
50 51 52 |
# File 'lib/masamune/schema/row.rb', line 50 def id=(id) @id = id.to_sym if id end |
#insert_columns ⇒ Object
83 84 85 |
# File 'lib/masamune/schema/row.rb', line 83 def insert_columns values.keys end |
#insert_constraints ⇒ Object
79 80 81 |
# File 'lib/masamune/schema/row.rb', line 79 def insert_constraints values.map { |key, value| "#{key} = #{parent.columns[key].sql_value(value)}" }.compact end |
#insert_values ⇒ Object
87 88 89 |
# File 'lib/masamune/schema/row.rb', line 87 def insert_values values.map { |key, value| parent.columns[key].sql_value(value) } end |
#invalid? ⇒ Boolean
115 116 117 |
# File 'lib/masamune/schema/row.rb', line 115 def invalid? errors.any? end |
#name(column = nil) ⇒ Object
64 65 66 67 68 69 70 71 |
# File 'lib/masamune/schema/row.rb', line 64 def name(column = nil) return unless @id if column "#{@id}_#{parent.name}_#{column.name}()" else "#{@id}_#{parent.name}_#{parent.surrogate_key.name}()" end end |
#natural_keys ⇒ Object
73 74 75 76 77 |
# File 'lib/masamune/schema/row.rb', line 73 def natural_keys parent.natural_keys.select do |column| values.keys.include?(column.name) && !column.sql_function?(values[column.name]) end end |
#parent=(parent) ⇒ Object
58 59 60 61 62 |
# File 'lib/masamune/schema/row.rb', line 58 def parent=(parent) @parent = parent normalize! if @parent validate! if @parent end |
#serialize ⇒ Object
99 100 101 102 103 104 105 |
# File 'lib/masamune/schema/row.rb', line 99 def serialize [].tap do |result| values.each do |key, value| result << @columns[key].csv_value(value) end end end |
#sql_value(column) ⇒ Object
107 108 109 |
# File 'lib/masamune/schema/row.rb', line 107 def sql_value(column) column.sql_value(values[column.name]) end |
#to_hash ⇒ Object
91 92 93 |
# File 'lib/masamune/schema/row.rb', line 91 def to_hash values.with_indifferent_access end |
#valid? ⇒ Boolean
111 112 113 |
# File 'lib/masamune/schema/row.rb', line 111 def valid? errors.empty? end |
#validate! ⇒ Object
119 120 121 122 |
# File 'lib/masamune/schema/row.rb', line 119 def validate! validate_required_columns! raise errors.first if invalid? end |
#values=(values) ⇒ Object
54 55 56 |
# File 'lib/masamune/schema/row.rb', line 54 def values=(values) @values = values.symbolize_keys end |