erlang_migrate (erlang_migrate v0.2.1)

View Source

erlang_migrate — database migration library modeled after golang-migrate/v4.

Quick Start

  Config = #{
      conn  => Conn,           % epgsql connection pid
      dir   => "priv/migrations",
      table => <<"schema_migrations">>,  % optional
      lock_id => 7369284       % optional, auto-derived from table name
  },
  ok = erlang_migrate:up(Config).

File naming

Migrations live in dir as pairs: {version}_{title}.up.sql {version}_{title}.down.sql (optional — skipping makes down/2 fail)

version must be a positive integer, e.g. 1, 100, 20240101120000.

Summary

Functions

down(Config)

-spec down(Config :: map()) -> ok | {error, term()}.

down(Config, Steps)

-spec down(Config :: map(), Steps :: pos_integer() | all) -> ok | {error, term()}.

drop(Config)

-spec drop(Config :: map()) -> ok | {error, term()}.

force(Config, Version)

-spec force(Config :: map(), Version :: integer()) -> ok | {error, term()}.

goto(Config, Version)

-spec goto(Config :: map(), Version :: integer()) -> ok | {error, term()}.

up(Config)

-spec up(Config :: map()) -> ok | {error, term()}.

up(Config, Steps)

-spec up(Config :: map(), Steps :: pos_integer() | all) -> ok | {error, term()}.

version(Config)

-spec version(Config :: map()) -> {ok, integer() | undefined, boolean()} | {error, term()}.