Module: Skr::Core::DB::MigrationMethods
- Defined in:
- lib/skr/core/db/migration_helpers.rb
Instance Method Summary collapse
- #create_skr_table(table_name, *args, &block) ⇒ Object
- #drop_skr_table(table_name, *args) ⇒ Object
- #remove_skr_index(table_name, column) ⇒ Object
- #skr_add_foreign_key(table_name, to_table, options = {}) ⇒ Object
- #skr_add_index(table_name, columns, options = {}) ⇒ Object
Instance Method Details
#create_skr_table(table_name, *args, &block) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/skr/core/db/migration_helpers.rb', line 64 def create_skr_table(table_name, *args, &block) definition = nil create_table( Skr::Core.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.skr_foreign_keys.each do |to_table, | skr_add_foreign_key( table_name, to_table, ) end definition.skr_extra_indexes.each do | index_column, | skr_add_index( table_name, index_column, ) end end |
#drop_skr_table(table_name, *args) ⇒ Object
115 116 117 |
# File 'lib/skr/core/db/migration_helpers.rb', line 115 def drop_skr_table( table_name, *args ) drop_table( Skr::Core.config.table_prefix + table_name ) end |
#remove_skr_index(table_name, column) ⇒ Object
119 120 121 |
# File 'lib/skr/core/db/migration_helpers.rb', line 119 def remove_skr_index( table_name, column ) remove_index( Skr::Core.config.table_prefix + table_name, column ) end |
#skr_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/skr/core/db/migration_helpers.rb', line 91 def skr_add_foreign_key( table_name, to_table, = {} ) from_table = Skr::Core.config.table_prefix + table_name.to_s to_table = Skr::Core.config.table_prefix + to_table.to_s # table_name #from_table = Skr::Core.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 |
#skr_add_index(table_name, columns, options = {}) ⇒ Object
80 81 82 83 84 85 86 87 88 89 |
# File 'lib/skr/core/db/migration_helpers.rb', line 80 def skr_add_index( table_name, columns, ={} ) table_name = Skr::Core.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 |