mobilizon.chapril.org-mobil.../priv/repo/migrations/20190130151607_split_event_visibility_and_join_options.exs
Thomas Citharel 1b3ee17d72
Set visibility field default to null
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2019-02-07 14:01:38 +01:00

41 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