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/migration_utils.ex
defmodule Mix.Tasks.Pow.Ecto.MigrationUtils do
@moduledoc """
Utilities module for ecto migrations in mix tasks.
"""
alias Mix.{Ecto, Generator}
@spec create_migration_files(atom(), binary(), binary()) :: any()
def create_migration_files(repo, name, content) do
base_name = "#{Macro.underscore(name)}.exs"
timestamp = timestamp()
repo
|> Ecto.source_repo_priv()
|> Path.join("migrations")
|> maybe_create_directory()
|> ensure_unique(base_name, name)
|> Path.join("#{timestamp}_#{base_name}")
|> Generator.create_file(content)
end
defp maybe_create_directory(path) do
Generator.create_directory(path)
path
end
defp ensure_unique(path, base_name, name) do
path
|> Path.join("*_#{base_name}")
|> Path.wildcard()
|> case do
[] -> path
_ -> Mix.raise("migration can't be created, there is already a migration file with name #{name}.")
end
end
defp timestamp do
{{y, m, d}, {hh, mm, ss}} = :calendar.universal_time()
"#{y}#{pad(m)}#{pad(d)}#{pad(hh)}#{pad(mm)}#{pad(ss)}"
end
defp pad(i) when i < 10, do: << ?0, ?0 + i >>
defp pad(i), do: to_string(i)
end