cloud_disk_sync/utils/
task.rs

1use crate::config::{ConfigManager, SyncTask};
2use std::fs;
3
4pub fn find_task_id(config_manager: &ConfigManager, id_or_name: &str) -> Option<String> {
5    // 尝试直接作为 ID 查找
6    if config_manager.get_task(id_or_name).is_some() {
7        return Some(id_or_name.to_string());
8    }
9
10    // 尝试作为名称查找
11    for task in config_manager.get_tasks().values() {
12        if task.name == id_or_name {
13            return Some(task.id.clone());
14        }
15    }
16
17    None
18}
19
20pub fn get_task_status(_task: &SyncTask) -> String {
21    // 这里可以检查任务上次执行时间、是否启用等
22    // 简化实现,总是返回就绪
23    "✅ 就绪".to_string()
24}
25
26pub fn remove_task_reports(task_id: &str) -> std::io::Result<()> {
27    let reports_dir = dirs::data_dir()
28        .unwrap_or_else(|| std::path::PathBuf::from("."))
29        .join("disksync")
30        .join("reports");
31
32    if !reports_dir.exists() {
33        return Ok(());
34    }
35
36    // 遍历报告目录,删除包含 task_id 的文件
37    // 报告文件名通常包含 task_id,例如: report_{task_id}_{timestamp}.json
38    for entry in fs::read_dir(reports_dir)? {
39        let entry = entry?;
40        let path = entry.path();
41        if path.is_file() {
42            if let Some(file_name) = path.file_name().and_then(|n| n.to_str()) {
43                if file_name.contains(task_id) {
44                    fs::remove_file(path)?;
45                }
46            }
47        }
48    }
49    Ok(())
50}