mobilizon/priv/repo/migrations/20200817080549_add_published_at_to_entities.exs

66 lines
1.2 KiB
Elixir
Raw Normal View History

defmodule Mobilizon.Storage.Repo.Migrations.AddPublishedAtToEntities do
use Ecto.Migration
alias Mobilizon.Storage.Repo
import Ecto.Query
def up do
alter table(:comments) do
add(:published_at, :utc_datetime)
end
flush()
copy_published_at_from_inserted_at("comments")
alter table(:resource) do
add(:published_at, :utc_datetime)
end
flush()
copy_published_at_from_inserted_at("resource")
alter table(:todo_lists) do
add(:published_at, :utc_datetime)
end
flush()
copy_published_at_from_inserted_at("todo_lists")
alter table(:todos) do
add(:published_at, :utc_datetime)
end
flush()
copy_published_at_from_inserted_at("todos")
end
def down do
alter table(:comments) do
remove(:published_at)
end
alter table(:resource) do
remove(:published_at)
end
alter table(:todo_lists) do
remove(:published_at)
end
alter table(:todos) do
remove(:published_at)
end
end
@spec copy_published_at_from_inserted_at(String.t()) :: any()
defp copy_published_at_from_inserted_at(table_name) do
from(c in table_name,
update: [set: [published_at: c.inserted_at]]
)
|> Repo.update_all([])
end
end