Packages
pow
0.1.0-alpha
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.schema.ex
defmodule Mix.Tasks.Pow.Ecto.Gen.Schema do
@shortdoc "Generates user schema and migration file"
@moduledoc """
Generates a user schema and migration file.
mix pow.ecto.gen.schema -r MyApp.Repo
"""
use Mix.Task
alias Mix.{Generator, Pow.Utils}
alias Mix.Tasks.Pow.Ecto.Gen
alias Pow.Ecto.Schema.Module
@switches [migrations: :boolean, context_app: :string]
@default_opts [migrations: true]
@doc false
def run(args) do
Utils.no_umbrella!("pow.ecto.gen.schema")
args
|> Utils.parse_options(@switches, @default_opts)
|> maybe_run_gen_migration(args)
|> create_schema_file()
end
defp maybe_run_gen_migration(%{migrations: true} = config, args) do
Gen.Migration.run(args)
config
end
defp maybe_run_gen_migration(config, _args), do: config
defp create_schema_file(config) do
context_app = Map.get(config, :context_app, Utils.context_app())
context_base = Utils.context_base(context_app)
base_name = "user.ex"
content = Module.gen(context_base, module: "Users.User")
context_app
|> Utils.context_lib_path("users")
|> maybe_create_directory()
|> Path.join(base_name)
|> ensure_unique()
|> Generator.create_file(content)
end
defp maybe_create_directory(path) do
Generator.create_directory(path)
path
end
defp ensure_unique(path) do
path
|> File.exists?()
|> case do
false -> path
_ -> Mix.raise("schema file can't be created, there is already a schema file in #{path}.")
end
end
end