Packages
pow
1.0.36
1.0.39
1.0.38
1.0.37
1.0.36
1.0.35
1.0.34
1.0.33
1.0.32
1.0.31
1.0.30
1.0.29
1.0.28
1.0.27
1.0.26
1.0.25
1.0.24
1.0.23
1.0.22
1.0.21
1.0.20
1.0.19
1.0.18
1.0.17
1.0.16
1.0.15
1.0.14
1.0.13
1.0.12
1.0.11
1.0.10
1.0.9
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
1.0.0-rc.4
1.0.0-rc.3
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.1.0-rc.1
0.1.0-alpha.8
0.1.0-alpha.7
retired
0.1.0-alpha.6
0.1.0-alpha.5
0.1.0-alpha.4
0.1.0-alpha.3
0.1.0-alpha.2
0.1.0-alpha.1
0.1.0-alpha
Robust user authentication solution
Current section
Files
Jump to
Current section
Files
lib/pow/ecto/schema/module.ex
defmodule Pow.Ecto.Schema.Module do
@moduledoc """
Generates schema module content.
## Configuration options
* `:binary_id` - if the schema module should use binary id, default nil.
* `:user_id_field` - the user id field to use in the schema module,
defaults nil.
"""
alias Pow.Config
@template """
defmodule <%= inspect schema.module %> do
use Ecto.Schema
use Pow.Ecto.Schema<%= if schema.user_id_field do %>, user_id_field: <%= inspect(schema.user_id_field) %><% end %>
<%= if schema.binary_id do %>
@primary_key {:id, :binary_id, autogenerate: true}
@foreign_key_type :binary_id<% end %>
schema <%= inspect schema.table %> do
pow_user_fields()
timestamps()
end
end
"""
@doc """
Generates schema module file content.
"""
@spec gen(map()) :: binary()
def gen(schema) do
EEx.eval_string(unquote(@template), schema: schema)
end
@doc """
Generates a schema module map.
"""
@spec new(atom(), binary(), binary(), Config.t()) :: map()
def new(base, schema_name, schema_plural, config \\ []) do
module = Module.concat([base, schema_name])
binary_id = config[:binary_id]
user_id_field = config[:user_id_field]
%{
schema_name: schema_name,
module: module,
table: schema_plural,
binary_id: binary_id,
user_id_field: user_id_field
}
end
end