makeResolver<AggregateT> function

ResolveProperty<AggregateT> makeResolver<AggregateT>(
  1. AggregateT? first,
  2. AggregateT? second, [
  3. AggregateT? third
])

Implementation

ResolveProperty<AggregateT> makeResolver<AggregateT>(AggregateT? first, AggregateT? second, [ AggregateT? third ]) {
  if (first == null && second == null)
    return <FieldT>(GetProperty<FieldT, AggregateT> getProperty) => getProperty(third!);
  else if (first == null && third == null)
    return <FieldT>(GetProperty<FieldT, AggregateT> getProperty) => getProperty(second!);
  else if (second == null && third == null)
    return <FieldT>(GetProperty<FieldT, AggregateT> getProperty) => getProperty(first!);
  else if (third == null)
    return <FieldT>(GetProperty<FieldT, AggregateT> getProperty) => getProperty(first!) ?? getProperty(second!);
  else if (second == null)
    return <FieldT>(GetProperty<FieldT, AggregateT> getProperty) => getProperty(first!) ?? getProperty(third);
  else if (first == null)
    return <FieldT>(GetProperty<FieldT, AggregateT> getProperty) => getProperty(second) ?? getProperty(third);
  else
    return <FieldT>(GetProperty<FieldT, AggregateT> getProperty) => getProperty(first) ?? getProperty(second) ?? getProperty(third);
}