Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module ActiveRecord
- class Migration
- def self.rename_table_if_needed(old_name, new_name)
- rename_table(old_name, new_name)
- rescue => ex
- puts "rename_table(#{old_name},#{new_name}) failed #{ex.message}"
- end
- def self.reset_sequence(model)
- if Biorails::Check.oracle?
- num = model.maximum(:id)+1
- name = "#{model.table_name}_seq"
- current_num = model.connection.select_one("select #{name}.nextval from dual")["nextval"].to_i
- diff = (num-current_num)
- if diff > 0
- puts "Update #{name} from #{current_num} to greater than #{num}"
- execute "alter sequence #{name} increment by #{diff} nocache"
- execute "select #{name}.nextval from dual"
- execute "alter sequence #{name} increment by 1 cache 20"
- execute "select #{name}.nextval from dual"
- end
- end
- rescue Exception => ex
- puts "Failed to update sequence on #{model} #{ex.message}"
- end
- def self.add_column_if_missing(table_name, column_name, type, options = {})
- unless table_exists?(table_name.to_s) && columns(table_name.to_s).any? { |i| i.name == column_name.to_s }
- add_column table_name, column_name, type, options
- end
- rescue => ex
- puts ex.message
- end
- def self.add_index_unless_exists(table_name, columns, options = {})
- add_index(table_name, columns, options)
- rescue => ex
- puts "skipped index #{ex.message}"
- end
- def self.run_sql(sql)
- execute sql
- rescue => ex
- puts sql
- puts "Error: #{ex.message}"
- end
- def self.remove_column_if_found(table_name, column_name, type=nil, options = {})
- if table_exists?(table_name.to_s) && columns(table_name.to_s).any? { |i| i.name == column_name.to_s }
- remove_column table_name, column_name
- end
- rescue => ex
- puts ex.message
- end
- def self.rename_column_if_found(table_name, old_name, new_name)
- if table_exists?(table_name.to_s) && columns(table_name.to_s).any? { |i| i.name == old_name.to_s }
- rename_column table_name, old_name, new_name
- end
- rescue Exception => ex
- puts ex.message
- end
- def self.rename_table_if_exists(old_name,new_name)
- if table_exists?(old_name.to_s)
- rename_table(old_name,new_name)
- end
- end
- def self.create_table_if_missing(table_name, options = {}, &body)
- unless table_exists?(table_name.to_s)
- add_column table_name, options, &body
- end
- rescue => ex
- puts ex.message
- end
- def self.drop_table_if_exists(table_name, options = {})
- if table_exists?(table_name.to_s)
- drop_table table_name, options
- end
- rescue => ex
- puts ex.message
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement