Class: DbDiff::Delta::AddTable

Inherits:
DbDiff::Delta show all
Defined in:
lib/dbdiff/delta.rb

Instance Attribute Summary

Attributes inherited from DbDiff::Delta

#element

Instance Method Summary collapse

Methods inherited from DbDiff::Delta

#table, #to_a

Constructor Details

#initialize(element) ⇒ AddTable

Returns a new instance of AddTable.



212
213
214
215
216
217
218
219
# File 'lib/dbdiff/delta.rb', line 212

def initialize(element)
  super
  # we don't clone foreign_keys or rows since
  # the table_elements diff will take care of them
  @element.triggers = []
  @element.rows = []
  @element.foreign_keys = []
end

Instance Method Details

#process(database) ⇒ Object



234
235
236
# File 'lib/dbdiff/delta.rb', line 234

def process(database)
  database.tables << element
end

#sqlObject



221
222
223
224
225
226
227
228
229
230
231
232
# File 'lib/dbdiff/delta.rb', line 221

def sql
  # XXX may need to  SET FOREIGN_KEY_CHECKS = 0;
  sql = "CREATE TABLE `%s` (\n" % element.name
  
  # intentionally skip foreign_keys to avoid missing tables
  # foreign_keys get picked up with the table_element diff
  sql += (element.columns.map{|c| c.definition} + 
         element.keys.map{|k| k.definition}).join(",\n")
  
  sql += "\n) ENGINE=%s DEFAULT CHARSET=%s" % [element.engine, element.charset]
  sql
end