Rivet.Migration (rivet v2.7.1)

View Source

Summary

Types

rivet_config()

@type rivet_config() :: %{
  app: String.t(),
  base: atom(),
  base_path: String.t(),
  models_root: String.t(),
  opts: Keyword.t(),
  tests_root: String.t()
}

rivet_error()

@type rivet_error() :: {:error, String.t() | atom()}

rivet_migration_input_any()

rivet_migration_input_external()

@type rivet_migration_input_external() :: %{
  external: String.t(),
  migrations: [rivet_migration_input_include()]
}

rivet_migration_input_include()

@type rivet_migration_input_include() :: %{include: module(), prefix: integer()}

rivet_migration_input_model()

@type rivet_migration_input_model() :: map()

rivet_migration_state()

@type rivet_migration_state() :: %{
  idx: %{required(integer()) => t()},
  mods: %{required(atom()) => list()}
}

rivet_migrations()

@type rivet_migrations() :: [t()]

rivet_state_result()

@type rivet_state_result() :: {:ok, rivet_migration_state()} | rivet_error()

t()

@type t() :: %Rivet.Migration{
  base: boolean(),
  external: nil | String.t(),
  include: nil | module(),
  index: nil | String.t(),
  migrations: nil | list(),
  model: nil | module(),
  module: nil | module(),
  parent: nil | module(),
  path: nil | String.t(),
  prefix: nil | integer(),
  version: integer()
}

Functions

as_module(name)

datestamp()

iex> datestamp(~N[2023-05-31 08:11:59])
"20230531081159"
iex> String.length(datestamp()) == 20

datestamp(time)

load_data_file(path)

@spec load_data_file(String.t()) :: {:ok, [list()]} | rivet_error()
iex> load_data_file("nar")
{:error, "Cannot find file 'nar'"}
iex> load_data_file("test/support/rivet_test_input")
{:error, "Cannot load file 'test/support/rivet_test_input': Invalid contents"}

# force an error
iex> load_data_file("LICENSE.txt")
{:error, "Cannot load file 'LICENSE.txt': keyword argument must be followed by space after: http:"}

maxlen_in(list, func \\ & &1)

iex> maxlen_in(["a", "bcde", "fgh", "xyzabcdef"])
9

migration_model(mod)

iex> migration_model(This.Narf.Migrations)
"Narf"
iex> migration_model(This.Narf.Not)
"Not"

module_extend(parent, mod)

iex> module_extend(This.Module, Narf)
This.Module.Narf

module_pop(mod)

iex> module_pop(This.Module.Narf)
This.Module

nodot(path)

iex> nodot("this/narf/not.ex")
["this", "narf", "not.ex"]
iex> nodot("./narf/not.ex")
["narf", "not.ex"]

pad(s, w, fill \\ "0")

iex> pad("x", 4)
"000x"
iex> pad("4", -4)
"4000"
iex> pad(4, -4)
"4000"
iex> pad(4, 4)
"0004"