defmodule Mobilizon.Storage.Repo.Migrations.AddMemberSinceToMembers do use Ecto.Migration def up do alter table(:members) do add(:member_since, :utc_datetime) end flush() %Postgrex.Result{rows: rows} = Ecto.Adapters.SQL.query!( Mobilizon.Storage.Repo, "SELECT id, role FROM members" ) Enum.each(rows, fn [id, role] -> if role in ["member", "moderator", "administrator", "creator"] do Ecto.Adapters.SQL.query!( Mobilizon.Storage.Repo, "UPDATE members SET member_since = '#{DateTime.to_iso8601(DateTime.utc_now())}' WHERE id = '#{ Ecto.UUID.cast!(id) }'" ) end end) end def down do alter table(:members) do remove(:member_since) end end end