getCacheStats method

Future<CacheStats> getCacheStats()

获取统计信息

Implementation

Future<CacheStats> getCacheStats() async {
  final allItems = await select(cacheItems).get();
  final now = DateTime.now();
  if (allItems.isEmpty) {
    return CacheStats(
      totalItems: 0,
      totalSize: 0,
      expiredItems: 0,
      oldestItem: null,
      newestItem: null,
    );
  }
  final expiredItems = allItems
      .where((item) => item.expiresAt.isBefore(now))
      .length;
  DateTime? oldest;
  DateTime? newest;
  for (final item in allItems) {
    if (oldest == null || item.createdAt.isBefore(oldest)) {
      oldest = item.createdAt;
    }
    if (newest == null || item.createdAt.isAfter(newest)) {
      newest = item.createdAt;
    }
  }
  return CacheStats(
    totalItems: allItems.length,
    totalSize: allItems.fold<int>(0, (sum, item) => sum + item.size),
    expiredItems: expiredItems,
    oldestItem: oldest,
    newestItem: newest,
  );
}