defmodule Slax.Repo.Migrations.AlterUsersAddUsername do use Ecto.Migration def change do alter table(:users) do add :username, :citext end query = """ update users set username = initcap(substring(email from '^[^@]+')) ; """ execute query, "" alter table(:users) do modify :username, :citext, null: false, from: {:citext, null: true} end create unique_index(:users, :username) end end