Skip to content

Commit

Permalink
(chore): add support for using PaperTrail.Multi directly (izelnakri#140)
Browse files Browse the repository at this point in the history
  • Loading branch information
fv316 authored and mayel committed Jun 26, 2023
1 parent c2c09b1 commit f9c2586
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions lib/paper_trail/multi.ex
Original file line number Diff line number Diff line change
Expand Up @@ -92,11 +92,13 @@ defmodule PaperTrail.Multi do
originator: nil,
prefix: nil,
model_key: :model,
version_key: :version
version_key: :version,
ecto_options: []
]
) do
model_key = options[:model_key] || :model
version_key = options[:version_key] || :version
ecto_options = options[:ecto_options] || []

case RepoClient.strict_mode() do
true ->
Expand Down Expand Up @@ -128,7 +130,11 @@ defmodule PaperTrail.Multi do

_ ->
multi
|> Ecto.Multi.update(model_key, changeset)
|> Ecto.Multi.update(
model_key,
changeset,
ecto_options ++ Keyword.take(options, [:returning])
)
|> Ecto.Multi.run(version_key, fn repo, %{^model_key => _model} ->
version = make_version_struct(%{event: "update"}, changeset, options)
repo.insert(version)
Expand All @@ -145,14 +151,16 @@ defmodule PaperTrail.Multi do
originator: nil,
prefix: nil,
model_key: :model,
version_key: :version
version_key: :version,
ecto_options: []
]
) do
model_key = options[:model_key] || :model
version_key = options[:version_key] || :version
ecto_options = options[:ecto_options] || []

multi
|> Ecto.Multi.delete(model_key, struct, options)
|> Ecto.Multi.delete(model_key, struct, ecto_options)
|> Ecto.Multi.run(version_key, fn repo, %{} ->
version = make_version_struct(%{event: "delete"}, struct, options)
repo.insert(version, options)
Expand All @@ -167,7 +175,7 @@ defmodule PaperTrail.Multi do
case RepoClient.strict_mode() do
true ->
case transaction do
{:error, :model, changeset, %{}} ->
{:error, _, changeset, %{}} ->
filtered_changes =
Map.drop(changeset.changes, [:current_version_id, :first_version_id])

Expand All @@ -179,7 +187,7 @@ defmodule PaperTrail.Multi do

_ ->
case transaction do
{:error, :model, changeset, %{}} -> {:error, Map.merge(changeset, %{repo: repo})}
{:error, _, changeset, %{}} -> {:error, Map.merge(changeset, %{repo: repo})}
_ -> transaction
end
end
Expand Down

0 comments on commit f9c2586

Please sign in to comment.