mergeIncludes<TParent> function
List<MssqlRelation<TParent, Object?> >
mergeIncludes<TParent>(
- List<
MssqlRelation< current,TParent, Object?> > - List<
MssqlRelation< extra, {TParent, Object?> > - String path = '',
Merges two include lists by relation name.
The same path is folded so include(customer) then include(customer.then(x))
is one load. Conflicting filter, order, limit, strategy or trash scope is
an error rather than a silent pick.
Implementation
List<MssqlRelation<TParent, Object?>> mergeIncludes<TParent>(
List<MssqlRelation<TParent, Object?>> current,
List<MssqlRelation<TParent, Object?>> extra, {
String path = '',
}) {
if (extra.isEmpty) return current;
final byName = <String, MssqlRelation<TParent, Object?>>{
for (final relation in current) relation.name: relation,
};
for (final relation in extra) {
final here = path.isEmpty ? relation.name : '$path.${relation.name}';
final existing = byName[relation.name];
if (existing == null) {
byName[relation.name] = relation;
continue;
}
_assertCompatible(here, existing, relation);
byName[relation.name] = existing.withNested(relation.nested);
}
return byName.values.toList(growable: false);
}