README.md

# rebar3_strata

A rebar plugin to manage schema migrations with [strata](https://git.sr.ht/~fancycade/strata).

## Build

    rebar3 compile

## Use

Create a migrations directory in your `src` folder of your application. In this example, the path will be `apps/strata_example/src/migrations`.
We have a migrations folder in the source directory of an app with a default release structure.

Next in `rebar.config` set this config:

    %% Install plugin
    {project_plugins, [rebar3_strata]}.

    %% Run strata compile command on compilation step
    {provider_hooks, [{pre, [{compile, {strata, compile}}]}]}.

    %% Set path read and write migrations at
    {strata, [{path, "apps/strata_example/src/migrations"}]}.

### New

Create a new schema migration with `rebar3 strata new <migration>`.

For example, in a todo app, you might creata schema like this:

    rebar3 strata new create_todos

### Compile

If the provider_hook is set you will not need to run the compile step manually. However, if you wanted to the command is:

    rebar3 strata compile

The compilation step creates a strata_migrations module in the migrations folder. At runtime you can call:

    strata_migrations:init()

Which will return the migrations map to be used by strata in the config step. For a more complete example might look like:

    Migrations = strata_migrations:init(),
    %% Using the strata_postgres backend for example purposes
    Config = strata:config(Migrations, strata_postgres),
    ok = strata:run(Config).

## License

Apache V2