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, resolveFiledName: true)!;
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;
}
}