selectByIDs method
FutureOr<List<O?> >
selectByIDs(
- List ids, {
- Transaction? transaction,
- EntityResolutionRules? resolutionRules,
override
Implementation
@override
FutureOr<List<O?>> selectByIDs(List<dynamic> ids,
{Transaction? transaction, EntityResolutionRules? resolutionRules}) {
if (ids.isEmpty) return <O?>[];
checkNotClosed();
var idsUnique = ids.length == 1 ? ids : ids.toSet().toList();
if (idsUnique.length == 1) {
var id = idsUnique.first;
var cachedEntity = transaction?.getCachedEntityByID(id, type: type);
if (cachedEntity != null) {
return <O>[cachedEntity];
}
var ret = selectByID(id,
transaction: transaction, resolutionRules: resolutionRules);
return ret.resolveMapped((o) => _idsToUniqueEntityList(ids, o));
}
var cachedEntities = transaction?.getCachedEntitiesByIDs<O>(idsUnique,
type: type, removeCachedIDs: true);
if (idsUnique.isEmpty) {
var entities = _idsToEntitiesList(ids, null, cachedEntities);
trackEntitiesNullable(entities);
return entities;
}
var ret = select(ConditionIdIN(idsUnique),
transaction: transaction, resolutionRules: resolutionRules);
return ret
.resolveMapped((results) => _idsToEntitiesList(
ids, entityHandler.toEntitiesByIdMap(results), cachedEntities))
.resolveMapped(trackEntitiesNullable);
}