README.md

# EctoTrail

EctoTrail allows to store changeset changes into a separate `audit_log` table.

## Installation and usage

1. Add `ecto_trail` to your list of dependencies in `mix.exs`:

  ```elixir
  def deps do
    [{:ecto_trail, "~> 0.1.0"}]
  end
  ```

2. Ensure `ecto_trail` is started before your application:

  ```elixir
  def application do
    [extra_applications: [:ecto_trail]]
  end
  ```

3. Add a migration that creates `audit_log` table to `priv/repo/migrations` folder:

  ```elixir
  defmodule EctoTrail.TestRepo.Migrations.CreateAuditLogTable do
    @moduledoc false
    use Ecto.Migration

    def change do
      create table(:audit_log, primary_key: false) do
        add :id, :uuid, primary_key: true
        add :actor_id, :string, null: false
        add :resource, :string, null: false
        add :resource_id, :string, null: false
        add :changeset, :map, null: false

        timestamps([type: :utc_datetime, updated_at: false])
      end
    end
  end
  ```

4. Use `EctoTrail` in your repo:

  ```elixir
  defmodule MyApp.Repo do
    use Ecto.Repo, otp_app: :my_app
    use EctoTrail
  end
  ```

5. Use logging functions instead of defaults. See `EctoTrail` module docs.

## Docs

The docs can be found at [https://hexdocs.pm/ecto_trail](https://hexdocs.pm/ecto_trail).