@@ -2847,7 +2847,7 @@ defmodule Ash.Actions.Update.Bulk do
28472847 ref ,
28482848 resource ,
28492849 metadata_key ,
2850- ref_metadata_key
2850+ ref_metadata_key \\ nil
28512851 ) do
28522852 source_context =
28532853 case changesets do
@@ -3537,10 +3537,18 @@ defmodule Ash.Actions.Update.Bulk do
35373537 end )
35383538 end
35393539
3540- defp find_changeset ( result , changesets_by_ref , _metadata_key , ref_metadata_key ) do
3540+ defp find_changeset_by_index ( result , changesets_by_ref , metadata_key ) do
3541+ changesets_by_ref [ result . __metadata__ [ metadata_key ] ]
3542+ end
3543+
3544+ defp find_changeset ( result , changesets_by_ref , _metadata_key , ref_metadata_key ) when not is_nil ( ref_metadata_key ) do
35413545 find_changeset_by_ref ( result , changesets_by_ref , ref_metadata_key )
35423546 end
35433547
3548+ defp find_changeset ( result , changesets_by_ref , metadata_key , nil ) do
3549+ find_changeset_by_index ( result , changesets_by_ref , metadata_key )
3550+ end
3551+
35443552 defp ensure_changeset! ( changeset , result , metadata_key , ref_metadata_key ) do
35453553 if changeset do
35463554 changeset
@@ -3550,17 +3558,15 @@ defmodule Ash.Actions.Update.Bulk do
35503558 end
35513559 end
35523560
3553- defp format_metadata_info ( result , _metadata_key , ref_metadata_key ) do
3561+ defp format_metadata_info ( result , _metadata_key , ref_metadata_key ) when not is_nil ( ref_metadata_key ) do
35543562 "ref #{ inspect ( result . __metadata__ [ ref_metadata_key ] ) } "
35553563 end
35563564
3557- defp result_matches_changes? (
3558- result ,
3559- changes ,
3560- changesets_by_ref ,
3561- _metadata_key ,
3562- ref_metadata_key
3563- ) do
3565+ defp format_metadata_info ( result , metadata_key , nil ) do
3566+ "index #{ inspect ( result . __metadata__ [ metadata_key ] ) } "
3567+ end
3568+
3569+ defp result_matches_changes? ( result , changes , changesets_by_ref , _metadata_key , ref_metadata_key ) when not is_nil ( ref_metadata_key ) do
35643570 ref_key = result . __metadata__ [ ref_metadata_key ]
35653571
35663572 if ref_key do
@@ -3573,4 +3579,8 @@ defmodule Ash.Actions.Update.Bulk do
35733579 end )
35743580 end
35753581 end
3582+
3583+ defp result_matches_changes? ( result , changes , _changesets_by_ref , metadata_key , nil ) do
3584+ result . __metadata__ [ metadata_key ] in List . wrap ( changes )
3585+ end
35763586end
0 commit comments