30 lines
1.3 KiB
Elixir
30 lines
1.3 KiB
Elixir
|
defmodule <%= inspect schema.repo %>.Migrations.Create<%= Macro.camelize(schema.table) %>AuthTables do
|
||
|
use Ecto.Migration
|
||
|
|
||
|
def change do<%= if Enum.any?(migration.extensions) do %><%= for extension <- migration.extensions do %>
|
||
|
<%= extension %><% end %>
|
||
|
<% end %>
|
||
|
create table(:<%= schema.table %><%= if schema.binary_id do %>, primary_key: false<% end %>) do
|
||
|
<%= if schema.binary_id do %> add :id, :binary_id, primary_key: true
|
||
|
<% end %> <%= migration.column_definitions[:email] %>
|
||
|
add :hashed_password, :string, null: false
|
||
|
add :confirmed_at, :naive_datetime
|
||
|
timestamps()
|
||
|
end
|
||
|
|
||
|
create unique_index(:<%= schema.table %>, [:email])
|
||
|
|
||
|
create table(:<%= schema.table %>_tokens<%= if schema.binary_id do %>, primary_key: false<% end %>) do
|
||
|
<%= if schema.binary_id do %> add :id, :binary_id, primary_key: true
|
||
|
<% end %> add :<%= schema.singular %>_id, references(:<%= schema.table %>, <%= if schema.binary_id do %>type: :binary_id, <% end %>on_delete: :delete_all), null: false
|
||
|
<%= migration.column_definitions[:token] %>
|
||
|
add :context, :string, null: false
|
||
|
add :sent_to, :string
|
||
|
timestamps(updated_at: false)
|
||
|
end
|
||
|
|
||
|
create index(:<%= schema.table %>_tokens, [:<%= schema.singular %>_id])
|
||
|
create unique_index(:<%= schema.table %>_tokens, [:context, :token])
|
||
|
end
|
||
|
end
|