hasReferencedEntities method

  1. @override
bool hasReferencedEntities([
  1. EntityResolutionRulesResolved? resolutionRules
])
override

Implementation

@override
bool hasReferencedEntities([EntityResolutionRulesResolved? resolutionRules]) {
  final fieldsEntity = _fieldsEntity;
  final fieldsEntityRef = _fieldsEntityRef;

  final fieldsListEntity = _fieldsListEntity;
  final fieldsListEntityRef = _fieldsListEntityRef;

  if (fieldsEntity.isEmpty && fieldsListEntity.isEmpty) return false;

  var fieldsEntityNoRef = fieldsEntity.length - fieldsEntityRef.length;
  if (fieldsEntityNoRef > 0) return true;

  var fieldsListEntityNoRef =
      fieldsListEntity.length - fieldsListEntityRef.length;
  if (fieldsListEntityNoRef > 0) return true;

  if (resolutionRules == null || resolutionRules.isInnocuous) return false;

  if (fieldsEntityRef.isEmpty && fieldsListEntityRef.isNotEmpty) return false;

  var allEager = resolutionRules.allEager ?? false;
  var eagerEntityTypes = resolutionRules.eagerEntityTypes;
  var lazyEntityTypes = resolutionRules.lazyEntityTypes;

  if (allEager) {
    if (lazyEntityTypes != null && lazyEntityTypes.isNotEmpty) {
      var anyEager = CombinedIterableView(
        [fieldsEntityRef.values, fieldsListEntityRef.values],
      ).any((t) => resolutionRules.isEagerEntityTypeInfo(t));
      return anyEager;
    } else {
      return true;
    }
  }

  if (eagerEntityTypes != null && eagerEntityTypes.isNotEmpty) {
    var anyEager = CombinedIterableView(
      [fieldsEntityRef.values, fieldsListEntityRef.values],
    ).any((t) => resolutionRules.isEagerEntityTypeInfo(t));
    return anyEager;
  }

  return false;
}