setRelationship<E extends Object> method
FutureOr<bool>
setRelationship<E extends Object>(
- O o,
- String field,
- List<
E> values, { - TypeInfo? fieldType,
- Transaction? transaction,
override
Implementation
@override
FutureOr<bool> setRelationship<E extends Object>(
O o, String field, List<E> values,
{TypeInfo? fieldType, Transaction? transaction}) {
checkNotClosed();
fieldType ??= entityHandler.getFieldType(o, field)!;
if (!fieldType.isListEntityOrReference) {
throw StateError("Field `$field` not a `List` entity type: $fieldType");
}
var op = TransactionOperationStoreRelationship(name, this, o, values,
transaction: transaction);
var valuesType = fieldType.arguments0!.type;
var valuesRepository = provider.getEntityRepository<E>(type: valuesType)!;
var valuesEntityHandler = valuesRepository.entityHandler;
var oId = getID(o, entityHandler: entityHandler);
var valuesIds = values.map((e) => valuesEntityHandler.getID(e));
var valuesIdsNotNull = IterableNullableExtension(valuesIds).whereNotNull();
return putRelationship(oId, valuesType, valuesIdsNotNull)
.resolveMapped((ok) {
op.finish(ok);
return ok;
});
}