rs_claude_bar/cache/
types.rs1use std::collections::HashMap;
2use chrono::{DateTime, Utc};
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7#[serde(transparent)]
8pub struct CacheInfo {
9 pub folders: HashMap<String, CachedFolder>
10}
11impl Default for CacheInfo {
12 fn default() -> Self { CacheInfo { folders: HashMap::new() } }
13}
14
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
17pub struct CachedFolder {
18 pub files: HashMap<String, CachedFile>,
19}
20
21#[derive(Debug, Clone, Serialize, Deserialize)]
22pub struct CachedFile {
23 pub file_name: String,
24 pub cache_time: DateTime<Utc>, pub blocks: HashMap<DateTime<Utc>, BlockLine>,
27 pub per_hour: HashMap<DateTime<Utc>, PerHourBlock>,
29 #[serde(skip)]
30 pub cache_status: CacheStatus,
31 #[serde(skip)]
32 pub modified_time: DateTime<Utc>,
33 #[serde(skip)]
34 pub created_time: DateTime<Utc>,
35 #[serde(skip)]
36 pub size_bytes: u64,
37}
38
39
40#[derive(Debug, Clone, Serialize, Deserialize)]
41pub struct BlockLine {
42 pub unlock_timestamp: Option<DateTime<Utc>>,
44 pub reset_text: String,
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
49pub struct PerHourBlock {
50 pub hour_start: DateTime<Utc>,
52 pub hour_end: DateTime<Utc>,
54 pub min_timestamp: DateTime<Utc>,
56 pub max_timestamp: DateTime<Utc>,
58 pub input_tokens: u32,
60 pub output_tokens: u32,
62 pub cache_creation_tokens: u32,
64 pub cache_read_tokens: u32,
66 pub assistant_messages: u32,
68 pub user_messages: u32,
70 pub total_content_length: u64,
72 pub entry_count: u32,
74}
75
76#[derive(Debug, Clone)]
77pub enum CacheStatus {
78 Fresh, NeedsRefresh, NotInCache, }
82impl Default for CacheStatus {
83 fn default() -> Self { CacheStatus::NotInCache }
84}