Class: DbDiff::Key
- Inherits:
-
TableElement
- Object
- TableElement
- DbDiff::Key
- Defined in:
- lib/dbdiff/key.rb
Instance Attribute Summary collapse
-
#column_data ⇒ Object
readonly
Returns the value of attribute column_data.
-
#primary ⇒ Object
readonly
Returns the value of attribute primary.
-
#unique ⇒ Object
readonly
Returns the value of attribute unique.
Attributes inherited from TableElement
Instance Method Summary collapse
- #==(other) ⇒ Object
- #add_delta ⇒ Object
- #columns ⇒ Object
- #definition ⇒ Object
- #drop_delta ⇒ Object
-
#initialize(table_name, info = {}) ⇒ Key
constructor
A new instance of Key.
- #merge(key) ⇒ Object
- #modify_delta(new_element) ⇒ Object
Methods inherited from TableElement
Constructor Details
#initialize(table_name, info = {}) ⇒ Key
Returns a new instance of Key.
5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/dbdiff/key.rb', line 5 def initialize(table_name, info= {}) @table_name = table_name # XXX need to work on tihs @name = info['Key_name'] @primary = (@name == 'PRIMARY' ? true : false) seq_index = info['Seq_in_index'].to_i - 1 @unique = (info['Non_unique'].to_i == 1 ? false : true) @column_data = {} @column_data[seq_index] = info['Column_name'] end |
Instance Attribute Details
#column_data ⇒ Object (readonly)
Returns the value of attribute column_data.
3 4 5 |
# File 'lib/dbdiff/key.rb', line 3 def column_data @column_data end |
#primary ⇒ Object (readonly)
Returns the value of attribute primary.
3 4 5 |
# File 'lib/dbdiff/key.rb', line 3 def primary @primary end |
#unique ⇒ Object (readonly)
Returns the value of attribute unique.
3 4 5 |
# File 'lib/dbdiff/key.rb', line 3 def unique @unique end |
Instance Method Details
#==(other) ⇒ Object
60 61 62 63 64 65 66 |
# File 'lib/dbdiff/key.rb', line 60 def ==(other) self.columns == other.columns && self.table_name == other.table_name && self.primary == other.primary && self.unique == other.unique && self.name == other.name end |
#add_delta ⇒ Object
56 57 58 |
# File 'lib/dbdiff/key.rb', line 56 def add_delta Delta::AddKey.new(self) end |
#columns ⇒ Object
19 20 21 |
# File 'lib/dbdiff/key.rb', line 19 def columns @column_data.keys.sort.map {|k| @column_data[k]} end |
#definition ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/dbdiff/key.rb', line 32 def definition sql = "" if @primary sql += " PRIMARY KEY " elsif @unique sql += " UNIQUE KEY `%s`" % self.name else sql += " KEY `%s`" % self.name end sql += " (" + self.columns.map{|c| '`' + c + '`' }.join(",") + " )" sql end |
#drop_delta ⇒ Object
52 53 54 |
# File 'lib/dbdiff/key.rb', line 52 def drop_delta Delta::DropKey.new(self) end |
#merge(key) ⇒ Object
23 24 25 26 27 28 29 30 |
# File 'lib/dbdiff/key.rb', line 23 def merge(key) unless key.name == self.name raise "Error - names don't match #{key.name} #{self.name}" end @column_data.merge!(key.column_data) end |