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

  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;
  }
}