修复Upload Service db_path重复问题

问题:
- FileTree::open_user_db(user_id)期望user_id参数
- 但server.rs中先调用user_db_path(user_id),再传递db_path给open_user_db
- 导致路径重复:data/users/data/users/test_user.sqlite.sqlite

修复:
- extract_and_register_archive:直接传递user_id给init_user_db
- upload_file原始注册逻辑:直接传递user_id给init_user_db
- 使用init_user_db确保数据库表创建(file_registry)

测试验证:
- ZIP文件上传成功 
- 自动解压成功(test_archive_extracted目录) 
- 提取文件正确(file1.txt, file2.txt, subdir/file3.txt) 
- 数据库初始化成功 
This commit is contained in:
Warren
2026-06-10 21:22:04 +08:00
parent ff8bc16565
commit 954d6ca98f

View File

@@ -942,8 +942,7 @@ fn extract_and_register_archive(
result.success_files, result.total_bytes);
// Register extracted files to database
let db_path = FileTree::user_db_path(user_id);
let conn = FileTree::open_user_db(&db_path)?;
let conn = FileTree::init_user_db(user_id)?;
let now = std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
@@ -1196,15 +1195,15 @@ async fn upload_file(
let hex = format!("{:x}", hash);
let file_uuid = hex[0..32].to_string();
// Save to database (user-specific SQLite)
let db_path = filetree::FileTree::user_db_path(&user_id);
// Save to database (user-specific SQLite)
let file_uuid_clone = file_uuid.clone();
let file_hash_clone = file_hash.clone();
let filename_clone = filename.clone();
let file_path_clone = file_path.clone();
let user_id_clone = user_id.clone();
let db_result = tokio::task::spawn_blocking(move || -> anyhow::Result<()> {
let conn = filetree::FileTree::open_user_db(&db_path)?;
let conn = filetree::FileTree::init_user_db(&user_id_clone)?;
// Register file
let now = std::time::SystemTime::now()