diff --git a/lib/mix/tasks/papertrail/install.ex b/lib/mix/tasks/papertrail/install.ex index 036cdc38..035d8252 100644 --- a/lib/mix/tasks/papertrail/install.ex +++ b/lib/mix/tasks/papertrail/install.ex @@ -22,8 +22,8 @@ defmodule Mix.Tasks.Papertrail.Install do add :item_type, :string, null: false add :item_id, :integer add :item_changes, :map, null: false - add :setter_id, references(:users) # you can change :users to your own foreign key constraint - #{set_by_field()} + add :originator_id, references(:users) # you can change :users to your own foreign key constraint + #{origin_by_field()} add :meta, :map add :inserted_at, :utc_datetime, null: false @@ -39,10 +39,10 @@ defmodule Mix.Tasks.Papertrail.Install do """ end - defp set_by_field do + defp origin_by_field do case @strict_mode do - true -> "add :set_by, :string, size: 50, null: false, default: \"unknown\"" - _ -> "add :set_by, :string, size: 50" + true -> "add :origin, :string, size: 50, null: false, default: \"unknown\"" + _ -> "add :origin, :string, size: 50" end end diff --git a/lib/paper_trail.ex b/lib/paper_trail.ex index 366a2f3b..515ff9c5 100644 --- a/lib/paper_trail.ex +++ b/lib/paper_trail.ex @@ -47,7 +47,7 @@ defmodule PaperTrail do @doc """ Inserts a record to the database with a related version insertion in one transaction """ - def insert(changeset, options \\ [set_by: nil, meta: nil, setter_id: nil]) do + def insert(changeset, options \\ [origin: nil, meta: nil, originator_id: nil]) do case @client.strict_mode() do true -> transaction = Multi.new @@ -98,7 +98,7 @@ defmodule PaperTrail do @doc """ Updates a record from the database with a related version insertion in one transaction """ - def update(changeset, options \\ [set_by: nil, meta: nil, setter_id: nil]) do + def update(changeset, options \\ [origin: nil, meta: nil, originator_id: nil]) do case @client.strict_mode() do true -> transaction = Multi.new @@ -145,7 +145,7 @@ defmodule PaperTrail do @doc """ Deletes a record from the database with a related version insertion in one transaction """ - def delete(struct, options \\ [set_by: nil, meta: nil, setter_id: nil]) do + def delete(struct, options \\ [origin: nil, meta: nil, originator_id: nil]) do transaction = Multi.new |> Multi.delete(:model, struct) |> Multi.run(:version, fn %{} -> @@ -167,8 +167,8 @@ defmodule PaperTrail do item_type: model.__struct__ |> Module.split |> List.last, item_id: model.id, item_changes: serialize(model), - setter_id: options[:setter_id], - set_by: options[:set_by], + originator_id: options[:originator_id], + origin: options[:origin], meta: options[:meta] } end @@ -178,8 +178,8 @@ defmodule PaperTrail do item_type: changeset.data.__struct__ |> Module.split |> List.last, item_id: changeset.data.id, item_changes: changeset.changes, - setter_id: options[:setter_id], - set_by: options[:set_by], + originator_id: options[:originator_id], + origin: options[:origin], meta: options[:meta] } end @@ -189,8 +189,8 @@ defmodule PaperTrail do item_type: model.__struct__ |> Module.split |> List.last, item_id: model.id, item_changes: serialize(model), - setter_id: options[:setter_id], - set_by: options[:set_by], + originator_id: options[:originator_id], + origin: options[:origin], meta: options[:meta] } end diff --git a/lib/paper_trail/repo_client.ex b/lib/paper_trail/repo_client.ex index ca3b6bca..6a806c61 100644 --- a/lib/paper_trail/repo_client.ex +++ b/lib/paper_trail/repo_client.ex @@ -4,6 +4,6 @@ defmodule PaperTrail.RepoClient do Gets the configured repo module or defaults to Repo if none configured """ def repo, do: Application.get_env(:paper_trail, :repo) || Repo - def setter, do: Application.get_env(:paper_trail, :setter) || nil + def originator, do: Application.get_env(:paper_trail, :originator) || nil def strict_mode, do: Application.get_env(:paper_trail, :strict_mode) || false end diff --git a/lib/version.ex b/lib/version.ex index 5ebf1302..28724644 100644 --- a/lib/version.ex +++ b/lib/version.ex @@ -4,15 +4,15 @@ defmodule PaperTrail.Version do import Ecto.Changeset import Ecto.Query - @setter PaperTrail.RepoClient.setter + @setter PaperTrail.RepoClient.originator || nil schema "versions" do field :event, :string field :item_type, :string field :item_id, :integer field :item_changes, :map - field :setter_id, :integer - field :set_by, :string + field :originator_id, :integer + field :origin, :string, read_after_writes: true field :meta, :map if @setter do @@ -24,7 +24,7 @@ defmodule PaperTrail.Version do def changeset(model, params \\ :empty) do model - |> cast(params, [:item_type, :item_id, :item_changes, :set_by, :setter_id, :meta]) + |> cast(params, [:item_type, :item_id, :item_changes, :origin, :originator_id, :meta]) |> validate_required([:event, :item_type, :item_id, :item_changes]) end diff --git a/priv/repo/migrations/20160619190936_add_versions.exs b/priv/repo/migrations/20160619190936_add_versions.exs index 93ed5374..72a045fd 100644 --- a/priv/repo/migrations/20160619190936_add_versions.exs +++ b/priv/repo/migrations/20160619190936_add_versions.exs @@ -7,14 +7,14 @@ defmodule Repo.Migrations.AddVersions do add :item_type, :string, null: false add :item_id, :integer, null: false add :item_changes, :map, null: false - add :setter_id, references(:users) # you can change users to your own foreign key constraint - add :set_by, :string, size: 50, read_after_writes: true + add :originator_id, references(:users) # you can change users to your own foreign key constraint + add :origin, :string, size: 50 add :meta, :map add :inserted_at, :utc_datetime, null: false end - create index(:versions, [:setter_id]) + create index(:versions, [:originator_id]) create index(:versions, [:item_type, :item_id]) create index(:versions, [:item_type, :inserted_at]) # create index(:versions, [:event, :item_type]) diff --git a/test/paper_trail_strict_mode_test.exs b/test/paper_trail_strict_mode_test.exs index 5e13004a..8cc15760 100644 --- a/test/paper_trail_strict_mode_test.exs +++ b/test/paper_trail_strict_mode_test.exs @@ -32,7 +32,7 @@ defmodule PaperTrailStrictModeTest do test "creating a company creates a company version with correct attributes" do user = create_user() - {:ok, result} = create_company_with_version(@create_company_params, setter_id: user.id) + {:ok, result} = create_company_with_version(@create_company_params, originator_id: user.id) company_count = Company.count() version_count = Version.count() @@ -60,8 +60,8 @@ defmodule PaperTrailStrictModeTest do item_type: "StrictCompany", item_id: company.id, item_changes: company, - setter_id: user.id, - set_by: nil, + originator_id: user.id, + origin: nil, meta: nil } assert company == first(Company, :id) |> @repo.one |> serialize @@ -78,7 +78,7 @@ defmodule PaperTrailStrictModeTest do user = create_user() {:ok, insert_company_result} = create_company_with_version() {:ok, result} = update_company_with_version( - insert_company_result[:model], @update_company_params, setter_id: user.id + insert_company_result[:model], @update_company_params, originator_id: user.id ) company_count = Company.count() @@ -112,8 +112,8 @@ defmodule PaperTrailStrictModeTest do facebook: "acme.llc", current_version_id: version.id }, - setter_id: user.id, - set_by: nil, + originator_id: user.id, + origin: nil, meta: nil } assert company == first(Company, :id) |> @repo.one |> serialize @@ -137,7 +137,7 @@ defmodule PaperTrailStrictModeTest do {:ok, insert_company_result} = create_company_with_version() {:ok, update_company_result} = update_company_with_version(insert_company_result[:model]) company_before_deletion = first(Company, :id) |> @repo.one |> serialize - {:ok, result} = PaperTrail.delete(update_company_result[:model], setter_id: user.id) + {:ok, result} = PaperTrail.delete(update_company_result[:model], originator_id: user.id) company_count = Company.count() version_count = Version.count() @@ -179,8 +179,8 @@ defmodule PaperTrailStrictModeTest do first_version_id: insert_company_result[:version].id, current_version_id: update_company_result[:version].id }, - setter_id: user.id, - set_by: nil, + originator_id: user.id, + origin: nil, meta: nil } assert old_company == company_before_deletion @@ -212,7 +212,7 @@ defmodule PaperTrailStrictModeTest do last_name: "Nakri", gender: true, company_id: insert_company_result[:model].id - }) |> PaperTrail.insert(set_by: "admin", meta: %{linkname: "izelnakri"}) + }) |> PaperTrail.insert(origin: "admin", meta: %{linkname: "izelnakri"}) person_count = Person.count() version_count = Version.count() @@ -238,8 +238,8 @@ defmodule PaperTrailStrictModeTest do item_type: "StrictPerson", item_id: person.id, item_changes: person, - setter_id: nil, - set_by: "admin", + originator_id: nil, + origin: "admin", meta: %{linkname: "izelnakri"} } assert person == first(Person, :id) |> @repo.one |> serialize @@ -257,13 +257,13 @@ defmodule PaperTrailStrictModeTest do last_name: "Nakri", gender: true, company_id: target_company_insertion[:model].id - }) |> PaperTrail.insert(set_by: "admin") + }) |> PaperTrail.insert(origin: "admin") {:ok, result} = Person.changeset(insert_person_result[:model], %{ first_name: "Isaac", visit_count: 10, birthdate: ~D[1992-04-01], company_id: insert_company_result[:model].id - }) |> PaperTrail.update(set_by: "scraper", meta: %{linkname: "izelnakri"}) + }) |> PaperTrail.update(origin: "scraper", meta: %{linkname: "izelnakri"}) person_count = Person.count() version_count = Version.count() @@ -295,8 +295,8 @@ defmodule PaperTrailStrictModeTest do current_version_id: version.id, company_id: insert_company_result[:model].id }, - setter_id: nil, - set_by: "scraper", + originator_id: nil, + origin: "scraper", meta: %{linkname: "izelnakri"} } assert person == first(Person, :id) |> @repo.one |> serialize @@ -312,15 +312,15 @@ defmodule PaperTrailStrictModeTest do last_name: "Nakri", gender: true, company_id: target_company_insertion[:model].id - }) |> PaperTrail.insert(set_by: "admin") + }) |> PaperTrail.insert(origin: "admin") {:ok, update_person_result} = Person.changeset(insert_person_result[:model], %{ first_name: "Isaac", visit_count: 10, birthdate: ~D[1992-04-01] - }) |> PaperTrail.update(set_by: "scraper", meta: %{linkname: "izelnakri"}) + }) |> PaperTrail.update(origin: "scraper", meta: %{linkname: "izelnakri"}) person_before_deletion = first(Person, :id) |> @repo.one |> serialize {:ok, result} = PaperTrail.delete( - update_person_result[:model], set_by: "admin", meta: %{linkname: "izelnakri"} + update_person_result[:model], origin: "admin", meta: %{linkname: "izelnakri"} ) person_count = Person.count() @@ -349,8 +349,8 @@ defmodule PaperTrailStrictModeTest do first_version_id: insert_person_result[:version].id, current_version_id: update_person_result[:version].id }, - setter_id: nil, - set_by: "admin", + originator_id: nil, + origin: "admin", meta: %{linkname: "izelnakri"} } assert old_person == person_before_deletion diff --git a/test/paper_trail_test.exs b/test/paper_trail_test.exs index 0b6880f7..6a9e379f 100644 --- a/test/paper_trail_test.exs +++ b/test/paper_trail_test.exs @@ -32,7 +32,7 @@ defmodule PaperTrailTest do test "creating a company creates a company version with correct attributes" do user = create_user() - {:ok, result} = create_company_with_version(@create_company_params, setter_id: user.id) + {:ok, result} = create_company_with_version(@create_company_params, originator_id: user.id) company_count = Company.count() version_count = Version.count() @@ -58,8 +58,8 @@ defmodule PaperTrailTest do item_type: "SimpleCompany", item_id: company.id, item_changes: company, - setter_id: user.id, - set_by: nil, + originator_id: user.id, + origin: nil, meta: nil } assert company == first(Company, :id) |> @repo.one |> serialize @@ -76,7 +76,7 @@ defmodule PaperTrailTest do user = create_user() {:ok, insert_result} = create_company_with_version() {:ok, result} = update_company_with_version( - insert_result[:model], @update_company_params, setter_id: user.id + insert_result[:model], @update_company_params, originator_id: user.id ) company_count = Company.count() @@ -103,8 +103,8 @@ defmodule PaperTrailTest do item_type: "SimpleCompany", item_id: company.id, item_changes: %{city: "Hong Kong", website: "http://www.acme.com", facebook: "acme.llc"}, - setter_id: user.id, - set_by: nil, + originator_id: user.id, + origin: nil, meta: nil } assert company == first(Company, :id) |> @repo.one |> serialize @@ -128,7 +128,7 @@ defmodule PaperTrailTest do {:ok, insert_result} = create_company_with_version() {:ok, update_result} = update_company_with_version(insert_result[:model]) company_before_deletion = first(Company, :id) |> @repo.one |> serialize - {:ok, result} = PaperTrail.delete(update_result[:model], setter_id: user.id) + {:ok, result} = PaperTrail.delete(update_result[:model], originator_id: user.id) company_count = Company.count() version_count = Version.count() @@ -166,8 +166,8 @@ defmodule PaperTrailTest do twitter: nil, founded_in: nil }, - setter_id: user.id, - set_by: nil, + originator_id: user.id, + origin: nil, meta: nil } assert company == company_before_deletion @@ -199,7 +199,7 @@ defmodule PaperTrailTest do last_name: "Nakri", gender: true, company_id: new_company_result[:model].id - }) |> PaperTrail.insert(set_by: "admin", meta: %{linkname: "izelnakri"}) + }) |> PaperTrail.insert(origin: "admin", meta: %{linkname: "izelnakri"}) person_count = Person.count() version_count = Version.count() @@ -223,8 +223,8 @@ defmodule PaperTrailTest do item_type: "SimplePerson", item_id: person.id, item_changes: person, - setter_id: nil, - set_by: "admin", + originator_id: nil, + origin: "admin", meta: %{linkname: "izelnakri"} } assert person == first(Person, :id) |> @repo.one |> serialize @@ -242,13 +242,13 @@ defmodule PaperTrailTest do last_name: "Nakri", gender: true, company_id: target_company_insertion[:model].id - }) |> PaperTrail.insert(set_by: "admin") + }) |> PaperTrail.insert(origin: "admin") {:ok, result} = Person.changeset(insert_person_result[:model], %{ first_name: "Isaac", visit_count: 10, birthdate: ~D[1992-04-01], company_id: initial_company_insertion[:model].id - }) |> PaperTrail.update(set_by: "scraper", meta: %{linkname: "izelnakri"}) + }) |> PaperTrail.update(origin: "scraper", meta: %{linkname: "izelnakri"}) person_count = Person.count() version_count = Version.count() @@ -277,8 +277,8 @@ defmodule PaperTrailTest do birthdate: elem(Ecto.Date.cast(~D[1992-04-01]), 1), company_id: initial_company_insertion[:model].id }, - setter_id: nil, - set_by: "scraper", + originator_id: nil, + origin: "scraper", meta: %{linkname: "izelnakri"} } assert person == first(Person, :id) |> @repo.one |> serialize @@ -294,16 +294,16 @@ defmodule PaperTrailTest do last_name: "Nakri", gender: true, company_id: target_company_insertion[:model].id - }) |> PaperTrail.insert(set_by: "admin") # add link name later on + }) |> PaperTrail.insert(origin: "admin") # add link name later on {:ok, update_result} = Person.changeset(insert_person_result[:model], %{ first_name: "Isaac", visit_count: 10, birthdate: ~D[1992-04-01], company_id: target_company_insertion[:model].id - }) |> PaperTrail.update(set_by: "scraper", meta: %{linkname: "izelnakri"}) + }) |> PaperTrail.update(origin: "scraper", meta: %{linkname: "izelnakri"}) person_before_deletion = first(Person, :id) |> @repo.one |> serialize {:ok, result} = PaperTrail.delete( - update_result[:model], set_by: "admin", meta: %{linkname: "izelnakri"} + update_result[:model], origin: "admin", meta: %{linkname: "izelnakri"} ) person_count = Person.count() @@ -330,8 +330,8 @@ defmodule PaperTrailTest do birthdate: elem(Ecto.Date.cast(~D[1992-04-01]), 1), company_id: target_company_insertion[:model].id }, - setter_id: nil, - set_by: "admin", + originator_id: nil, + origin: "admin", meta: %{linkname: "izelnakri"} } assert old_person == person_before_deletion