# frozen_string_literal: true # From this migration the data model will be retro-compatible with FabManager v1.x # This will allow easier upgrades class MatchV1Models < ActiveRecord::Migration[5.2] def up # migrate data from columns of type "varchar" to type "inet" add_column :users, :current_sign_in_ip_tmp, :inet add_column :users, :last_sign_in_ip_tmp, :inet User.reset_column_information User.all.each do |user| user.current_sign_in_ip_tmp = user.current_sign_in_ip user.last_sign_in_ip_tmp = user.last_sign_in_ip user.save end remove_column :users, :current_sign_in_ip, :string remove_column :users, :last_sign_in_ip, :string rename_column :users, :current_sign_in_ip_tmp, :current_sign_in_ip rename_column :users, :last_sign_in_ip_tmp, :last_sign_in_ip # add various foreign keys add_foreign_key :projects_machines, :projects add_foreign_key :projects_machines, :machines add_foreign_key :project_users, :projects add_foreign_key :project_users, :users add_foreign_key :project_steps, :projects add_foreign_key :projects_components, :projects add_foreign_key :projects_components, :components add_foreign_key :projects_themes, :projects add_foreign_key :projects_themes, :themes end def down # migrate data from columns of type "inet" to type "varchar" add_column :users, :current_sign_in_ip_tmp, :string add_column :users, :last_sign_in_ip_tmp, :string User.reset_column_information User.all.each do |user| user.current_sign_in_ip_tmp = user.current_sign_in_ip user.last_sign_in_ip_tmp = user.last_sign_in_ip user.save end remove_column :users, :current_sign_in_ip, :inet remove_column :users, :last_sign_in_ip, :inet rename_column :users, :current_sign_in_ip_tmp, :current_sign_in_ip rename_column :users, :last_sign_in_ip_tmp, :last_sign_in_ip # remove the foreign keys remove_foreign_key :projects_machines, :projects remove_foreign_key :projects_machines, :machines remove_foreign_key :project_users, :projects remove_foreign_key :project_users, :users remove_foreign_key :project_steps, :projects remove_foreign_key :projects_components, :projects remove_foreign_key :projects_components, :components remove_foreign_key :projects_themes, :projects remove_foreign_key :projects_themes, :themes end end