mirror of
https://github.com/ash-project/ash_postgres.git
synced 2024-09-19 21:13:19 +12:00
fix: don't append update_defaults automatically if upsert_fields
was set
This commit is contained in:
parent
ce628384d2
commit
4d672ba088
1 changed files with 8 additions and 2 deletions
|
@ -1290,7 +1290,7 @@ defmodule AshPostgres.DataLayer do
|
|||
(options[:upsert_fields] || []) |> Enum.filter(&(&1 in attributes_changing_anywhere))
|
||||
|
||||
fields_to_upsert =
|
||||
(upsert_fields ++ Keyword.keys(update_defaults)) --
|
||||
upsert_fields --
|
||||
Keyword.keys(Enum.at(changesets, 0).atomics)
|
||||
|
||||
Enum.map(fields_to_upsert, fn upsert_field ->
|
||||
|
@ -1860,8 +1860,14 @@ defmodule AshPostgres.DataLayer do
|
|||
else
|
||||
keys = keys || Ash.Resource.Info.primary_key(keys)
|
||||
|
||||
update_defaults = update_defaults(resource)
|
||||
|
||||
explicitly_changing_attributes =
|
||||
Map.keys(changeset.attributes) -- Map.get(changeset, :defaults, []) -- keys
|
||||
changeset.attributes
|
||||
|> Map.keys()
|
||||
|> Enum.concat(Keyword.keys(update_defaults))
|
||||
|> Kernel.--(Map.get(changeset, :defaults, []))
|
||||
|> Kernel.--(keys)
|
||||
|
||||
upsert_fields =
|
||||
changeset.context[:private][:upsert_fields] || explicitly_changing_attributes
|
||||
|
|
Loading…
Reference in a new issue