setRelationship<E extends Object> method

  1. @override
FutureOr<bool> setRelationship<E extends Object>(
  1. O o,
  2. String field,
  3. List<E> values, {
  4. TypeInfo? fieldType,
  5. Transaction? transaction,
})
override

Implementation

@override
FutureOr<bool> setRelationship<E extends Object>(
    O o, String field, List<E> values,
    {TypeInfo? fieldType, Transaction? transaction}) {
  fieldType ??= entityHandler.getFieldType(o, field)!;

  var op = TransactionOperationStoreRelationship(
      name, operationExecutor, o, values,
      transaction: transaction);

  var valuesType = fieldType.arguments0!.type;
  String valuesTableName = _resolveTableName(valuesType);
  var valuesEntityHandler = _resolveEntityHandler(valuesType);

  var oId = entityHandler.getID(o);

  var othersIds = values
      .map((e) => valuesEntityHandler.isEntityInstance(e)
          ? valuesEntityHandler.getID(e)
          : e)
      .toList();

  try {
    return repositoryAdapter.doInsertRelationship(
        op, field, oId, valuesTableName, othersIds);
  } catch (e, s) {
    var message = 'setRelationship[$valuesTableName]> '
        'o: $o ; '
        'field: $field ; '
        'fieldType: $fieldType ; '
        'values: $values ; '
        'op: $op';
    _log.severe(message, e, s);
    rethrow;
  }
}