defmodule Dexi.Repo.Migrations.CreateUsers do use Ecto.Migration def change do execute "CREATE EXTENSION IF NOT EXISTS citext", "DROP EXTENSION IF EXISTS citext" create table(:users, primary_key: false) do add :pubkey, :text, primary_key: true add :email, :citext add :name, :string add :role, :string, null: false, default: "user" timestamps(type: :utc_datetime) end create unique_index(:users, [:email], where: "email IS NOT NULL") create constraint(:users, :users_role_must_be_valid, check: "role IN ('user', 'admin')") end end