diff --git a/db/migrate/20200809200631_final_bigint_migration.rb b/db/migrate/20200809200631_final_bigint_migration.rb new file mode 100644 index 000000000..9c2c71152 --- /dev/null +++ b/db/migrate/20200809200631_final_bigint_migration.rb @@ -0,0 +1,97 @@ +class FinalBigintMigration < ActiveRecord::Migration[6.0] + def up + ActiveRecord::Base.connection.execute("DROP VIEW IF EXISTS hypershield.api_secrets") + safety_assured { change_column :api_secrets, :user_id, :bigint } + + ActiveRecord::Base.connection.execute("DROP VIEW IF EXISTS hypershield.badge_achievements") + safety_assured { change_column :badge_achievements, :rewarder_id, :bigint } + + ActiveRecord::Base.connection.execute("DROP VIEW IF EXISTS hypershield.broadcasts") + safety_assured { change_column :broadcasts, :broadcastable_id, :bigint } + + ActiveRecord::Base.connection.execute("DROP VIEW IF EXISTS hypershield.display_ads") + safety_assured { change_column :display_ads, :organization_id, :bigint } + + puts "migrating feedback_messages PKs to bigints" + ActiveRecord::Base.connection.execute("DROP VIEW IF EXISTS hypershield.feedback_messages") + ActiveRecord::Base.connection.execute( + <<-SQL + ALTER TABLE feedback_messages + ALTER COLUMN affected_id TYPE bigint, + ALTER COLUMN offender_id TYPE bigint, + ALTER COLUMN reporter_id TYPE bigint + SQL + ) + + puts "migrating html_variant_successes PKs to bigints" + ActiveRecord::Base.connection.execute("DROP VIEW IF EXISTS hypershield.html_variant_successes") + ActiveRecord::Base.connection.execute( + <<-SQL + ALTER TABLE html_variant_successes + ALTER COLUMN article_id TYPE bigint, + ALTER COLUMN html_variant_id TYPE bigint + SQL + ) + + puts "migrating html_variant_trials PKs to bigints" + ActiveRecord::Base.connection.execute("DROP VIEW IF EXISTS hypershield.html_variant_trials") + ActiveRecord::Base.connection.execute( + <<-SQL + ALTER TABLE html_variant_trials + ALTER COLUMN article_id TYPE bigint, + ALTER COLUMN html_variant_id TYPE bigint + SQL + ) + + ActiveRecord::Base.connection.execute("DROP VIEW IF EXISTS hypershield.users_roles") + safety_assured { change_column :users_roles, :user_id, :bigint } + end + + def down + ActiveRecord::Base.connection.execute("DROP VIEW IF EXISTS hypershield.api_secrets") + safety_assured { change_column :api_secrets, :user_id, :int } + + ActiveRecord::Base.connection.execute("DROP VIEW IF EXISTS hypershield.badge_achievements") + safety_assured { change_column :badge_achievements, :rewarder_id, :int } + + ActiveRecord::Base.connection.execute("DROP VIEW IF EXISTS hypershield.broadcasts") + safety_assured { change_column :broadcasts, :broadcastable_id, :int } + + ActiveRecord::Base.connection.execute("DROP VIEW IF EXISTS hypershield.display_ads") + safety_assured { change_column :display_ads, :organization_id, :int } + + puts "migrating feedback_messages PKs to ints" + ActiveRecord::Base.connection.execute("DROP VIEW IF EXISTS hypershield.feedback_messages") + ActiveRecord::Base.connection.execute( + <<-SQL + ALTER TABLE feedback_messages + ALTER COLUMN affected_id TYPE int, + ALTER COLUMN offender_id TYPE int, + ALTER COLUMN reporter_id TYPE int + SQL + ) + + puts "migrating html_variant_successes PKs to ints" + ActiveRecord::Base.connection.execute("DROP VIEW IF EXISTS hypershield.html_variant_successes") + ActiveRecord::Base.connection.execute( + <<-SQL + ALTER TABLE html_variant_successes + ALTER COLUMN article_id TYPE int, + ALTER COLUMN html_variant_id TYPE int + SQL + ) + + puts "migrating html_variant_trials PKs to ints" + ActiveRecord::Base.connection.execute("DROP VIEW IF EXISTS hypershield.html_variant_trials") + ActiveRecord::Base.connection.execute( + <<-SQL + ALTER TABLE html_variant_trials + ALTER COLUMN article_id TYPE int, + ALTER COLUMN html_variant_id TYPE int + SQL + ) + + ActiveRecord::Base.connection.execute("DROP VIEW IF EXISTS hypershield.users_roles") + safety_assured { change_column :users_roles, :user_id, :int } + end +end diff --git a/db/schema.rb b/db/schema.rb index 98756888e..296e43fd3 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_08_06_193438) do +ActiveRecord::Schema.define(version: 2020_08_09_200631) do # These are extensions that must be enabled in order to support this database enable_extension "citext" @@ -71,7 +71,7 @@ ActiveRecord::Schema.define(version: 2020_08_06_193438) do t.string "description", null: false t.string "secret" t.datetime "updated_at", null: false - t.integer "user_id" + t.bigint "user_id" t.index ["secret"], name: "index_api_secrets_on_secret", unique: true t.index ["user_id"], name: "index_api_secrets_on_user_id" end @@ -189,7 +189,7 @@ ActiveRecord::Schema.define(version: 2020_08_06_193438) do create_table "badge_achievements", force: :cascade do |t| t.bigint "badge_id", null: false t.datetime "created_at", null: false - t.integer "rewarder_id" + t.bigint "rewarder_id" t.text "rewarding_context_message" t.text "rewarding_context_message_markdown" t.datetime "updated_at", null: false @@ -280,7 +280,7 @@ ActiveRecord::Schema.define(version: 2020_08_06_193438) do t.datetime "active_status_updated_at" t.string "banner_style" t.text "body_markdown" - t.integer "broadcastable_id" + t.bigint "broadcastable_id" t.string "broadcastable_type" t.datetime "created_at" t.text "processed_html" @@ -457,7 +457,7 @@ ActiveRecord::Schema.define(version: 2020_08_06_193438) do t.integer "clicks_count", default: 0 t.datetime "created_at", null: false t.integer "impressions_count", default: 0 - t.integer "organization_id" + t.bigint "organization_id" t.string "placement_area" t.text "processed_html" t.boolean "published", default: false @@ -496,14 +496,14 @@ ActiveRecord::Schema.define(version: 2020_08_06_193438) do end create_table "feedback_messages", force: :cascade do |t| - t.integer "affected_id" + t.bigint "affected_id" t.string "category" t.datetime "created_at" t.string "feedback_type" t.text "message" - t.integer "offender_id" + t.bigint "offender_id" t.string "reported_url" - t.integer "reporter_id" + t.bigint "reporter_id" t.string "status", default: "Open" t.datetime "updated_at" t.index ["affected_id"], name: "index_feedback_messages_on_affected_id" @@ -593,17 +593,17 @@ ActiveRecord::Schema.define(version: 2020_08_06_193438) do end create_table "html_variant_successes", force: :cascade do |t| - t.integer "article_id" + t.bigint "article_id" t.datetime "created_at", null: false - t.integer "html_variant_id" + t.bigint "html_variant_id" t.datetime "updated_at", null: false t.index ["html_variant_id", "article_id"], name: "index_html_variant_successes_on_html_variant_id_and_article_id" end create_table "html_variant_trials", force: :cascade do |t| - t.integer "article_id" + t.bigint "article_id" t.datetime "created_at", null: false - t.integer "html_variant_id" + t.bigint "html_variant_id" t.datetime "updated_at", null: false t.index ["html_variant_id", "article_id"], name: "index_html_variant_trials_on_html_variant_id_and_article_id" end @@ -1313,7 +1313,7 @@ ActiveRecord::Schema.define(version: 2020_08_06_193438) do create_table "users_roles", id: false, force: :cascade do |t| t.bigint "role_id" - t.integer "user_id" + t.bigint "user_id" t.index ["user_id", "role_id"], name: "index_users_roles_on_user_id_and_role_id" end