Function AshPostgres.DataLayer.upsert/3 is undefined or private

It is quite strange to be calling the data layer directly like that, but ignoring that for now:

try this:

def upsert(resource, changeset, keys, identity \\ nil) do
    changeset = %{changeset | tenant: changeset.to_tenant}
    data_layer = Ash.DataLayer.data_layer(resource)
    Code.ensure_loaded!(data_layer)

    if function_exported?(data_layer, :upsert, 4) do
      data_layer.upsert(resource, changeset, keys, identity)
    else
      IO.inspect("UPSERT/4 FOR #{data_layer} NOT IMPLEMENTED")
      data_layer.upsert(resource, changeset, keys)
    end
end
1 Like