read method
Is called when a value has to be decoded.
Implementation
@override
T read(reader) {
// read key first
final key = reader.read().toString();
// read attributes (no relationships stored)
final total = reader.readByte();
final map = <String, dynamic>{
for (var i = 0; i < total; i++) reader.read().toString(): reader.read(),
};
// reconstruct relationship information from graph
for (final entry in relationshipsFor().entries) {
// entry keys are the name of relationships => metadata
final name = entry.key;
final relKeys = graph._getEdge(key, metadata: name);
map[name] =
entry.value['kind'] == 'BelongsTo' ? relKeys.safeFirst : relKeys;
}
return deserialize(map);
}