Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What I'm doing
Adding a new callback
prepare_transaction/2
toEcto.Repo
.Why?
To offer the possibility of further modifying the given
Ecto.Multi
or options in transaction operations before it is transformed and sent to the database. @josevalim suggested to consider adding this function to inject thecommit_comment
option if the users wanted to extract that comment based on thestacktrace
.Approach
prepare_transaction/2
callback.transaction
operation inEcto.Repo
.Ecto.TestAdapter
to include theopts
given to the transaction operation.Alternate approaches considered
As mentioned in this discussion, if the user wants to inject a
commit_comment
based on thestacktrace
, the only option available today is the following hack:And we certainly don't want to promote these things ;)
I’d like feedback on
The current implementation of
prepare_transaction/2
takes afun_or_multi
as the first argument, but it doesn't make too much sense to accept thefun
part (a function with arity zero or one) because I don't see how that would be useful or how it can be extended. The original implementation ofprepare_transaction/2
accepts afun
to keep things as simple as possible. As always, I'm open to suggestions.