serialize method

  1. @override
Map<String, dynamic> serialize(
  1. T model
)
inherited

Returns a serialized version of a model of T, as a Map<String, dynamic> ready to be JSON-encoded.

Implementation

@override
Map<String, dynamic> serialize(T model) {
  final map = localAdapter.serialize(model).filterNulls;

  final relationships = <String, dynamic>{};

  for (final field in localAdapter.relationshipsFor(model).keys) {
    final key = keyForField(field);

    if (map[field] != null) {
      if (map[field] is HasMany) {
        relationships[key] =
            (map[field] as HasMany).toSet().map((e) => e.id).toList();
      }
      if (map[field] is BelongsTo) {
        relationships[key] = (map[field] as BelongsTo).value?.id;
      }
    }
    map.remove(field);
  }

  return map..addAll(relationships.filterNulls);
}