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