oximedia_proxy/cache/
cleanup.rs1use std::path::PathBuf;
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq)]
7pub enum CleanupPolicy {
8 RemoveAll,
10
11 RemoveOlderThan(u64),
13
14 TargetSize(u64),
16}
17
18pub struct CacheCleanup {
20 #[allow(dead_code)]
21 cache_dir: PathBuf,
22}
23
24impl CacheCleanup {
25 #[must_use]
27 pub fn new(cache_dir: PathBuf) -> Self {
28 Self { cache_dir }
29 }
30
31 pub fn cleanup(&self, _policy: CleanupPolicy) -> crate::Result<CleanupResult> {
33 Ok(CleanupResult {
35 files_removed: 0,
36 bytes_freed: 0,
37 })
38 }
39
40 pub fn stats(&self) -> crate::Result<CacheStats> {
42 Ok(CacheStats {
44 total_files: 0,
45 total_size: 0,
46 })
47 }
48}
49
50#[derive(Debug, Clone)]
52pub struct CleanupResult {
53 pub files_removed: usize,
55
56 pub bytes_freed: u64,
58}
59
60#[derive(Debug, Clone)]
62pub struct CacheStats {
63 pub total_files: usize,
65
66 pub total_size: u64,
68}
69
70#[cfg(test)]
71mod tests {
72 use super::*;
73
74 #[test]
75 fn test_cleanup_policy() {
76 let policy = CleanupPolicy::RemoveOlderThan(86400);
77 assert_eq!(policy, CleanupPolicy::RemoveOlderThan(86400));
78 }
79
80 #[test]
81 fn test_cache_cleanup() {
82 let temp_dir = std::env::temp_dir();
83 let cleanup = CacheCleanup::new(temp_dir);
84 let result = cleanup.cleanup(CleanupPolicy::RemoveAll);
85 assert!(result.is_ok());
86 }
87}