Packages
pow
1.0.2
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
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/ecto/pow.ecto.gen.migration.ex
defmodule Mix.Tasks.Pow.Ecto.Gen.Migration do
@shortdoc "Generates user migration file"
@moduledoc """
Generates a user migrations file.
mix pow.ecto.gen.migration -r MyApp.Repo
mix pow.ecto.gen.migration -r MyApp.Repo Accounts.Organization organizations
"""
use Mix.Task
alias Pow.Ecto.Schema.Migration, as: SchemaMigration
alias Mix.{Ecto, Pow, Pow.Ecto.Migration}
@switches [binary_id: :boolean]
@default_opts [binary_id: false]
@mix_task "pow.ecto.install"
@doc false
def run(args) do
Pow.no_umbrella!(@mix_task)
Pow.ensure_ecto!(@mix_task, args)
args
|> Pow.parse_options(@switches, @default_opts)
|> parse()
|> create_migrations_files(args)
end
defp parse({config, parsed, _invalid}) do
case parsed do
[_schema_name, schema_plural | _rest] ->
Map.merge(config, %{schema_plural: schema_plural})
_ ->
config
end
end
defp create_migrations_files(config, args) do
args
|> Ecto.parse_repo()
|> Enum.map(&Ecto.ensure_repo(&1, args))
|> Enum.map(&Map.put(config, :repo, &1))
|> Enum.each(&create_migration_files/1)
end
defp create_migration_files(%{repo: repo, binary_id: binary_id} = config) do
context_base = Pow.context_base(Pow.context_app())
schema_plural = Map.get(config, :schema_plural, "users")
schema = SchemaMigration.new(context_base, schema_plural, repo: repo, binary_id: binary_id)
content = SchemaMigration.gen(schema)
Migration.create_migration_files(repo, schema.migration_name, content)
end
end