ex_trainer/priv/repo/migrations/20210627114539_alter_trainings_add_period.exs

47 lines
1.1 KiB
Elixir
Raw Normal View History

defmodule Wabanex.Repo.Migrations.AlterTrainingsAddPeriod do
use Ecto.Migration
def up do
alter table(:trainings) do
add :period, :daterange
end
execute("""
update trainings set
period=daterange(start_date, end_date, '[)')
, updated_at=date_trunc('second', current_timestamp::timestamp)
""")
alter table(:trainings) do
remove :start_date
remove :end_date
modify :period, :daterange, null: false
end
create constraint(:trainings, :non_overlap_period,
exclude: "gist (user_id WITH =, period with &&)"
)
end
def down do
alter table(:trainings) do
add :start_date, :date
add :end_date, :date
end
execute("""
update trainings set
start_date=lower(period)
, end_date=upper(period)
, update_at=date_trunc('second', current_timestamp::timestamp)
""")
drop constraint(:trainings, :non_overlap_period)
alter table(:trainings) do
remove :period
modify :start_date, :date, null: false
end
end
end