How can I upsert without creating an identity on Postgres? I want to check if a record exists with a combination of parent_id
and name
for some records, but I do not want to enforce it with Postgres.
postgres do
table "entities"
repo MyApp.Repo
references do
reference :children, index?: true, on_delete: :delete
reference :parent, index?: true, on_delete: :delete
end
# skip_identities [:parent_id_child_name]
end
identities do
identity :parent_id_child_name, [:parent_id, :name] do
# eager_check? true
# pre_check? true
end
end
actions do
defaults [:read]
create :upsert_data do
accept [:parent_id, :name, :data]
upsert? true
upsert_identity :parent_id_child_name
end
end
skip_identities
cannot compile.
error: undefined function skip_identities/1 (there is no such import)`
eager_check?
and pre_check?
doesn’t update.
%Ash.Error.Changes.InvalidChanges{
fields: [:parent_id, :name],
message: "has already been taken",