mobilizon.chapril.org-mobil.../priv/repo/migrations/20190130151607_split_event_...

49 lines
1.4 KiB
Elixir

defmodule Mobilizon.Repo.Migrations.SplitEventVisibilityAndJoinOptions do
use Ecto.Migration
alias Mobilizon.Events.EventVisibilityEnum
alias Mobilizon.Events.JoinOptionsEnum
@doc """
EventVisibilityEnum has dropped some possible values, so we need to recreate it
Visibility allowed nullable values previously
"""
def up do
execute("ALTER TABLE events ALTER COLUMN visibility TYPE VARCHAR USING visibility::text")
EventVisibilityEnum.drop_type()
EventVisibilityEnum.create_type()
execute(
"ALTER TABLE events ALTER COLUMN visibility TYPE event_visibility_type USING visibility::event_visibility_type"
)
JoinOptionsEnum.create_type()
alter table(:events) do
add(:join_options, JoinOptionsEnum.type(), null: false, default: "free")
end
execute("UPDATE events SET visibility = 'public' WHERE visibility IS NULL")
alter table(:events) do
modify(:visibility, EventVisibilityEnum.type(), null: false, default: "public")
end
end
def down do
alter table(:events) do
remove(:join_options)
end
JoinOptionsEnum.drop_type()
execute("ALTER TABLE events ALTER COLUMN visibility TYPE VARCHAR USING visibility::text")
EventVisibilityEnum.drop_type()
EventVisibilityEnum.create_type()
execute(
"ALTER TABLE events ALTER COLUMN visibility TYPE event_visibility_type USING visibility::event_visibility_type"
)
end
end