Bulk create with setting conflict as query

Is it possible to somehow use Ash bulk_create setting a query as the conflict?

I want to bulk_create a resource but that resource should only be updated if it pass a condition. For example, I can do that with the following Ecto query:

    # These are the fields I want to update, I get them at runtime
    fields = [:id, :external_id, :transaction_time]

    # I generate a set structure for Ecto using dynamic + fragment
    # I need this to be dynamically generated since the fields array
    # is dynamic as-well
    updates = [
      set: Enum.map(fields, fn field ->
        {field, dynamic([lhs], fragment("EXCLUDED.?", literal(^Atom.to_string(field))))}

    # This is my on_conflict query where I check if the `transaction_time` is 
    # newer (greater) than the one in the DB, if it is, I update the row
    on_conflict =
      from lhs in Property,
        where: lhs.transaction_time < fragment("EXCLUDED.transaction_time"),
        update: ^updates

      returning: true,
      conflict_target: [:id],
      on_conflict: on_conflict

Can I translate that into an action for Ash and use bulk_create?

Not currently, no. This isn’t the first time we’ve had need of richer options for upserts, but this will have to be added in a future release.