getEntityByID<O> method

  1. @override
FutureOr<O?> getEntityByID<O>(
  1. dynamic id, {
  2. Type? type,
  3. bool sync = false,
  4. EntityResolutionRules? resolutionRules,
})
override

Implementation

@override
FutureOr<O?> getEntityByID<O>(id,
    {Type? type, bool sync = false, EntityResolutionRules? resolutionRules}) {
  var oAsync = transaction.getEntityByID<O>(id, type: type, sync: sync);

  return oAsync.resolveMapped((o) {
    if (o != null || sync) return o;

    var t = type ?? O;
    if (!EntityHandler.isValidEntityType(t)) {
      return null;
    }

    final resolutionRulesResolved =
        resolveEntityResolutionRules(resolutionRules ?? this.resolutionRules);

    var allowEntityFetch = resolutionRulesResolved.allowEntityFetch;

    if (!allowEntityFetch) {
      return null;
    }

    var entityRepository =
        entityRepositoryProvider.getEntityRepository(type: t);
    if (entityRepository == null) return null;

    var sel = entityRepository.selectByID(id,
        transaction: transaction, resolutionRules: resolutionRulesResolved);

    return sel.resolveMapped((o) => o as O?);
  });
}