42 lines
1009 B
Elixir
42 lines
1009 B
Elixir
defmodule Mobilizon.Repo.Migrations.MoveUserRoleToEnum do
|
|
use Ecto.Migration
|
|
|
|
alias Mobilizon.Users.UserRole
|
|
|
|
def up do
|
|
UserRole.create_type()
|
|
|
|
alter table(:users) do
|
|
add(:role_tmp, UserRole.type(), default: "user")
|
|
end
|
|
|
|
execute("UPDATE users set role_tmp = 'user' where role = 0")
|
|
execute("UPDATE users set role_tmp = 'moderator' where role = 1")
|
|
execute("UPDATE users set role_tmp = 'administrator' where role = 2")
|
|
|
|
alter table(:users) do
|
|
remove(:role)
|
|
end
|
|
|
|
rename(table(:users), :role_tmp, to: :role)
|
|
end
|
|
|
|
def down do
|
|
alter table(:users) do
|
|
add(:role_tmp, :integer, default: 0)
|
|
end
|
|
|
|
execute("UPDATE users set role_tmp = 0 where role = 'user'")
|
|
execute("UPDATE users set role_tmp = 1 where role = 'moderator'")
|
|
execute("UPDATE users set role_tmp = 2 where role = 'administrator'")
|
|
|
|
alter table(:users) do
|
|
remove(:role)
|
|
end
|
|
|
|
UserRole.drop_type()
|
|
|
|
rename(table(:users), :role_tmp, to: :role)
|
|
end
|
|
end
|