mobilizon/priv/repo/migrations/20190207134142_move_participant_role_to_enum.exs
Thomas Citharel 7dd7e8fc36
Fix mix format and format migrations too
Signed-off-by: Thomas Citharel <tcit@tcit.fr>

Fix credo warnings

Signed-off-by: Thomas Citharel <tcit@tcit.fr>

Show elixir version

Signed-off-by: Thomas Citharel <tcit@tcit.fr>

Also lint migrations

Signed-off-by: Thomas Citharel <tcit@tcit.fr>

Reset allow failure to false

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2019-02-22 14:53:09 +01:00

45 lines
1.4 KiB
Elixir

defmodule Mobilizon.Repo.Migrations.MoveParticipantRoleToEnum do
use Ecto.Migration
alias Mobilizon.Events.ParticipantRoleEnum
def up do
ParticipantRoleEnum.create_type()
alter table(:participants) do
add(:role_tmp, ParticipantRoleEnum.type(), default: "participant")
end
execute("UPDATE participants set role_tmp = 'not_approved' where role = 0")
execute("UPDATE participants set role_tmp = 'participant' where role = 1")
execute("UPDATE participants set role_tmp = 'moderator' where role = 2")
execute("UPDATE participants set role_tmp = 'administrator' where role = 3")
execute("UPDATE participants set role_tmp = 'creator' where role = 4")
alter table(:participants) do
remove(:role)
end
rename(table(:participants), :role_tmp, to: :role)
end
def down do
alter table(:participants) do
add(:role_tmp, :integer, default: 1)
end
execute("UPDATE participants set role_tmp = 0 where role = 'not_approved'")
execute("UPDATE participants set role_tmp = 1 where role = 'participant'")
execute("UPDATE participants set role_tmp = 2 where role = 'moderator'")
execute("UPDATE participants set role_tmp = 3 where role = 'administrator'")
execute("UPDATE participants set role_tmp = 4 where role = 'creator'")
alter table(:participants) do
remove(:role)
end
ParticipantRoleEnum.drop_type()
rename(table(:participants), :role_tmp, to: :role)
end
end