# EctoAudit
Ecto extension to support auditing data changes in your Schema.
** NOTE: The process around this is a little convoluted at the moment. Very much WIP. **
## Installation
Add EctoAudit as a dependency in your `mix.exs` file.
```
defp deps do
[
{:ecto_audit, "~> 0.0.1"}
]
end
```
After you are done, run mix deps.get in your shell to fetch the dependencies.
## Usage
In each Ecto Schema you wish to audit, add the following line:
```
defmodule User do
use Ecto.Model
use EctoAudit.Auditable, repo: YourApp.Repo # << This line required for each Schema to be audited.
schema "users" do
field :first_name, :string
field :last_name, :string
field :submitted_by, :integer
timestamps
end
end
```
Then, create a corresponding "Audit" schema containing the fields to be tracked from the "main" schema. This must also have `*_id`, `effective_at` and `inactive_at` fields to aid with the auditing process.
```
defmodule UserAudit do
use Ecto.Model
schema "users" do
field :first_name, :string
field :last_name, :string
field :submitted_by, :integer
field :user_id, :integer
field :effective_at, Ecto.DateTime
field :inactive_at, Ecto.DateTime
end
end
```
Finally, when performing Inserts, Updates or Deletes to the primary schema replace `Repo.{insert|update|delete}` with `User.{insert|update|delete}`.