2019-02-01 12:33:15 +01:00
|
|
|
defmodule Mobilizon.Repo.Migrations.SplitEventVisibilityAndJoinOptions do
|
|
|
|
use Ecto.Migration
|
2019-09-13 01:01:17 +02:00
|
|
|
alias Mobilizon.Events.EventVisibility
|
|
|
|
alias Mobilizon.Events.JoinOptions
|
2019-02-01 12:33:15 +01:00
|
|
|
|
|
|
|
@doc """
|
2019-09-13 01:01:17 +02:00
|
|
|
EventVisibility has dropped some possible values, so we need to recreate it
|
2019-02-07 14:01:38 +01:00
|
|
|
|
|
|
|
Visibility allowed nullable values previously
|
2019-02-01 12:33:15 +01:00
|
|
|
"""
|
|
|
|
def up do
|
2019-02-22 14:18:52 +01:00
|
|
|
execute("ALTER TABLE events ALTER COLUMN visibility TYPE VARCHAR USING visibility::text")
|
2019-09-13 01:01:17 +02:00
|
|
|
EventVisibility.drop_type()
|
|
|
|
EventVisibility.create_type()
|
2019-02-22 14:18:52 +01:00
|
|
|
|
|
|
|
execute(
|
2019-09-13 02:28:09 +02:00
|
|
|
"ALTER TABLE events ALTER COLUMN visibility TYPE event_visibility USING visibility::event_visibility"
|
2019-02-22 14:18:52 +01:00
|
|
|
)
|
|
|
|
|
2019-09-13 01:01:17 +02:00
|
|
|
JoinOptions.create_type()
|
2019-02-01 12:33:15 +01:00
|
|
|
|
|
|
|
alter table(:events) do
|
2019-09-13 01:01:17 +02:00
|
|
|
add(:join_options, JoinOptions.type(), null: false, default: "free")
|
2019-02-01 12:33:15 +01:00
|
|
|
end
|
2019-02-07 14:01:38 +01:00
|
|
|
|
2019-02-22 14:18:52 +01:00
|
|
|
execute("UPDATE events SET visibility = 'public' WHERE visibility IS NULL")
|
2019-02-07 14:01:38 +01:00
|
|
|
|
|
|
|
alter table(:events) do
|
2019-09-13 01:01:17 +02:00
|
|
|
modify(:visibility, EventVisibility.type(), null: false, default: "public")
|
2019-02-07 14:01:38 +01:00
|
|
|
end
|
2019-02-01 12:33:15 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
def down do
|
|
|
|
alter table(:events) do
|
|
|
|
remove(:join_options)
|
|
|
|
end
|
|
|
|
|
2019-09-13 01:01:17 +02:00
|
|
|
JoinOptions.drop_type()
|
2019-02-22 14:18:52 +01:00
|
|
|
|
|
|
|
execute("ALTER TABLE events ALTER COLUMN visibility TYPE VARCHAR USING visibility::text")
|
2019-09-13 01:01:17 +02:00
|
|
|
EventVisibility.drop_type()
|
|
|
|
EventVisibility.create_type()
|
2019-02-22 14:18:52 +01:00
|
|
|
|
|
|
|
execute(
|
2019-09-13 02:28:09 +02:00
|
|
|
"ALTER TABLE events ALTER COLUMN visibility TYPE event_visibility USING visibility::event_visibility"
|
2019-02-22 14:18:52 +01:00
|
|
|
)
|
2019-02-01 12:33:15 +01:00
|
|
|
end
|
|
|
|
end
|