EctoTrail allows to store Ecto changeset changes in a separate audit_log table.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin/ci
config
lib/ecto_trail
priv/repo/migrations
test
.gitignore
.travis.yml
LICENSE.md
README.md
coveralls.json
mix.exs
mix.lock

README.md

EctoTrail

Hex.pm Downloads Latest Version License Build Status Coverage Status Ebert

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:
def deps do
  [{:ecto_trail, "~> 0.2.0"}]
end
  1. Ensure ecto_trail is started before your application:
def application do
  [extra_applications: [:ecto_trail]]
end
  1. Add a migration that creates audit_log table to priv/repo/migrations folder:
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
  1. Use EctoTrail in your repo:
defmodule MyApp.Repo do
  use Ecto.Repo, otp_app: :my_app
  use EctoTrail
end
  1. Configure table name which is used to store audit log (in config.ex):
config :ecto_trail, table_name: "audit_log"
  1. Use logging functions instead of defaults. See EctoTrail module docs.

Docs

The docs can be found at https://hexdocs.pm/ecto_trail.