Module: Lanes::DB::MigrationMethods
- Defined in:
- lib/lanes/db/migration_helpers.rb
Instance Method Summary collapse
- #create_hip_table(table_name, *args, &block) ⇒ Object
- #drop_hip_table(table_name, *args) ⇒ Object
- #hip_add_foreign_key(table_name, to_table, options = {}) ⇒ Object
- #hip_add_index(table_name, columns, options = {}) ⇒ Object
- #remove_hip_index(table_name, column) ⇒ Object
Instance Method Details
#create_hip_table(table_name, *args, &block) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/lanes/db/migration_helpers.rb', line 64 def create_hip_table(table_name, *args, &block) definition = nil create_table( Lanes.config.table_prefix + table_name, *args ) do | td | # Thanks for the trick from the Foreigner gem! # in connection_adapters/abstract/schema_statements definition = td block.call(td) unless block.nil? end definition.hip_foreign_keys.each do |to_table, | hip_add_foreign_key( table_name, to_table, ) end definition.hip_extra_indexes.each do | index_column, | hip_add_index( table_name, index_column, ) end end |
#drop_hip_table(table_name, *args) ⇒ Object
115 116 117 |
# File 'lib/lanes/db/migration_helpers.rb', line 115 def drop_hip_table( table_name, *args ) drop_table( Lanes.config.table_prefix + table_name ) end |
#hip_add_foreign_key(table_name, to_table, options = {}) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/lanes/db/migration_helpers.rb', line 91 def hip_add_foreign_key( table_name, to_table, = {} ) from_table = Lanes.config.table_prefix + table_name.to_s to_table = Lanes.config.table_prefix + to_table.to_s # table_name #from_table = Lanes.config.table_prefix + table_name column = [:column] || "#{to_table.to_s.singularize}_id" foreign_key_name = .key?(:name) ? [:name].to_s : "#{from_table}_#{column}_fk" primary_key = [:primary_key] || "id" dependency = case [:dependent] when :nullify then "ON DELETE SET NULL" when :delete then "ON DELETE CASCADE" when :restrict then "ON DELETE RESTRICT" else "" end sql = "ALTER TABLE #{quote_table_name(from_table)} " + "ADD CONSTRAINT #{quote_column_name(foreign_key_name)} " + "FOREIGN KEY (#{quote_column_name(column)}) " + "REFERENCES #{quote_table_name( to_table )}(#{primary_key})" sql << " #{dependency}" if dependency.present? sql << " #{[:options]}" if [:options] execute(sql) end |
#hip_add_index(table_name, columns, options = {}) ⇒ Object
80 81 82 83 84 85 86 87 88 89 |
# File 'lib/lanes/db/migration_helpers.rb', line 80 def hip_add_index( table_name, columns, ={} ) table_name = Lanes.config.table_prefix + table_name.to_s if [:function] unique = [:unique] ? 'unique' : '' name = table_name + 'indx_' + columns execute( "create #{unique} index #{name} on #{table_name}(#{[:function]})" ) else add_index( table_name, columns, ) end end |