serializableAttributes method
Map<String, Object?>
serializableAttributes({
- bool includeHidden = false,
- ValueCodecRegistry? registry,
inherited
Serializes the attribute map, applying casts and filtering hidden fields.
Implementation
Map<String, Object?> serializableAttributes({
bool includeHidden = false,
ValueCodecRegistry? registry,
}) {
final inspector = _attributeInspector();
final codecs = registry ?? ValueCodecRegistry.instance;
final result = <String, Object?>{};
final definition = _definition;
final accessors = definition?.accessors ?? const <String, AttributeAccessor>{};
final attrs = _ensureAttributes();
for (final entry in attrs.entries) {
if (!_shouldSerializeColumn(entry.key, includeHidden, inspector)) {
continue;
}
final accessor = accessors[entry.key];
final value = accessor == null
? entry.value
: accessor(this as OrmEntity, entry.value);
result[entry.key] =
accessor == null
? _encodeAttribute(
column: entry.key,
value: value,
registry: codecs,
definition: definition,
inspector: inspector,
)
: codecs.encodeValue(value);
}
final appends = _metadata.appends;
if (appends.isNotEmpty) {
for (final attribute in appends) {
if (result.containsKey(attribute)) {
continue;
}
if (!_shouldSerializeColumn(attribute, includeHidden, inspector)) {
continue;
}
final accessor = accessors[attribute];
if (accessor != null) {
result[attribute] = codecs.encodeValue(
accessor(this as OrmEntity, attrs[attribute]),
);
continue;
}
if (!attrs.containsKey(attribute)) {
continue;
}
result[attribute] = _encodeAttribute(
column: attribute,
value: attrs[attribute],
registry: codecs,
definition: definition,
inspector: inspector,
);
}
}
return result;
}