convertFromPrimitiveValue method

  1. @override
dynamic convertFromPrimitiveValue(
  1. dynamic value
)
override

Converts a value to a more complex value from a primitive value according to this instance's definition.

This method takes a non-Dart representation of a value (e.g. an HTTP body or database query) and turns it into a Dart representation . How this value is computed depends on this instance's definition.

Implementation

@override
dynamic convertFromPrimitiveValue(dynamic value) {
  if (value == null) {
    return null;
  }

  if (relationshipType == ManagedRelationshipType.belongsTo ||
      relationshipType == ManagedRelationshipType.hasOne) {
    if (value is! Map<String, dynamic>) {
      throw ValidationException(["invalid input type for '$name'"]);
    }

    final instance = destinationEntity!.instanceOf()?..readFromMap(value);

    return instance;
  }

  /* else if (relationshipType == ManagedRelationshipType.hasMany) { */

  if (value is! List) {
    throw ValidationException(["invalid input type for '$name'"]);
  }

  final instantiator = (dynamic m) {
    if (m is! Map<String, dynamic>) {
      throw ValidationException(["invalid input type for '$name'"]);
    }
    final instance = destinationEntity!.instanceOf()?..readFromMap(m);
    return instance;
  };
  return destinationEntity!.setOf(value.map(instantiator));
}