selectRelationship<E> method
FutureOr<Iterable>
selectRelationship<E>(
- O? o,
- String field, {
- Object? oId,
- TypeInfo? fieldType,
- Transaction? transaction,
override
Implementation
@override
FutureOr<Iterable<dynamic>> selectRelationship<E>(O? o, String field,
{Object? oId, TypeInfo? fieldType, Transaction? transaction}) {
fieldType ??= entityHandler.getFieldType(o, field)!;
oId ??= entityHandler.getID(o!);
var cachedRelationship =
_getCachedEntityRelationship(oId, field, fieldType, transaction);
if (cachedRelationship != null) {
return cachedRelationship;
}
var op = TransactionOperationSelectRelationship(
name, operationExecutor, o ?? oId,
transaction: transaction);
var valuesType = fieldType.arguments0!.type;
String valuesTableName = _resolveTableName(valuesType);
try {
return repositoryAdapter
.doSelectRelationship(op, field, oId, valuesTableName, (sel) {
var valuesIds = sel.map((e) => e['target_id']!).cast<E>().toList();
return valuesIds;
});
} catch (e, s) {
var message = 'selectRelationship[valuesTableName]> '
'o: $o ; '
'oId: $oId ; '
'field: $field ; '
'fieldType: $fieldType ; '
'op: $op';
_log.severe(message, e, s);
rethrow;
}
}