getStats method

  1. @override
Future<CacheStats> getStats()
override

获取统计信息

Implementation

@override
Future<CacheStats> getStats() async {
  final expired = _cache.values.where((item) => item.isExpired).length;

  if (_cache.isEmpty) {
    return CacheStats(
      totalItems: 0,
      totalSize: 0,
      expiredItems: 0,
      oldestItem: null,
      newestItem: null,
    );
  }

  return CacheStats(
    totalItems: _cache.length,
    totalSize: _cache.values.fold<int>(0, (sum, item) => sum + item.size),
    expiredItems: expired,
    oldestItem: _cache.values
        .map((e) => e.createdAt)
        .reduce((a, b) => a.isBefore(b) ? a : b),
    newestItem: _cache.values
        .map((e) => e.createdAt)
        .reduce((a, b) => a.isAfter(b) ? a : b),
  );
}