dehydrate method
Map<String, dynamic>
dehydrate({
- bool shouldDehydrate(
- QueryCacheEntry entry
- dynamic serialize(
- dynamic data,
- List key
Serializes only this scope's cache — never another request's state.
Implementation
Map<String, dynamic> dehydrate({
bool Function(QueryCacheEntry<dynamic> entry)? shouldDehydrate,
dynamic Function(dynamic data, List<dynamic> key)? serialize,
}) {
_assertAlive();
final queries = <Map<String, dynamic>>[];
for (final entry in _cache.values) {
if (entry.isExpired) continue;
if (shouldDehydrate != null && !shouldDehydrate(entry)) continue;
final dynamic serializedData;
if (serialize != null) {
serializedData = serialize(entry.data, entry.key);
} else {
serializedData = entry.data;
}
try {
jsonEncode(serializedData);
} catch (e) {
throw ArgumentError(
'Data for query key "${BloomData.normalizeKey(entry.key)}" is not JSON-encodable: $e. '
'Provide a custom `serialize` function to dehydrate() to convert domain objects.',
);
}
queries.add({
'key': entry.key,
'data': serializedData,
'updatedAt': entry.updatedAt.toIso8601String(),
'staleTimeMs': entry.staleTime.inMilliseconds,
'cacheTimeMs': entry.cacheTime.inMilliseconds,
'isStale': entry.isStale,
});
}
return {'queries': queries};
}