getCacheStats method
获取统计信息
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,
);
}