first pass

This commit is contained in:
Echo
2025-07-05 22:14:47 -04:00
parent a0cc474d1a
commit 619fc1eb74
13 changed files with 77 additions and 50 deletions

View File

@@ -0,0 +1,41 @@
class MigrateAdminLevelsOnUsers < ActiveRecord::Migration[7.0]
def up
add_column :users, :admin_level, :integer, default: 0, null: false
User.reset_column_information
User.find_each do |user|
if user.is_superadmin
user.update_column(:admin_level, 1)
elsif user.is_admin
user.update_column(:admin_level, 2)
else
user.update_column(:admin_level, 0)
end
end
remove_column :users, :is_admin, :boolean
remove_column :users, :is_superadmin, :boolean
end
def down
add_column :users, :is_admin, :boolean, default: false, null: false
add_column :users, :is_superadmin, :boolean, default: false, null: false
User.reset_column_information
User.find_each do |user|
case user.admin_level
when 1
user.update_column(:is_superadmin, true)
user.update_column(:is_admin, true)
when 2
user.update_column(:is_admin, true)
user.update_column(:is_superadmin, false)
else
user.update_column(:is_admin, false)
user.update_column(:is_superadmin, false)
end
end
remove_column :users, :admin_level, :integer
end
end

3
db/schema.rb generated
View File

@@ -519,7 +519,6 @@ ActiveRecord::Schema[8.0].define(version: 2025_07_01_142553) do
t.datetime "updated_at", null: false
t.string "username"
t.string "slack_avatar_url"
t.boolean "is_admin", default: false, null: false
t.boolean "uses_slack_status", default: false, null: false
t.string "slack_scopes", default: [], array: true
t.text "slack_access_token"
@@ -536,7 +535,7 @@ ActiveRecord::Schema[8.0].define(version: 2025_07_01_142553) do
t.string "mailing_address_otc"
t.boolean "allow_public_stats_lookup", default: true, null: false
t.boolean "default_timezone_leaderboard", default: true, null: false
t.boolean "is_superadmin", default: false, null: false
t.integer "admin_level", default: 0, null: false
t.index ["github_uid", "github_access_token"], name: "index_users_on_github_uid_and_access_token"
t.index ["github_uid"], name: "index_users_on_github_uid"
t.index ["slack_uid"], name: "index_users_on_slack_uid", unique: true