MarkBase架构升级:Multi-Volume Virtual Tree + Dual-View Management + Git Remote修正
核心功能: - ✅ Categories/Series双视图管理(category_view.rs + import_markdown.rs) - ✅ FUSE Multi-Volume支持(tree_type参数) - ✅ SSH/SFTP/SCP/rsync协议完整实现(4042行) - ✅ NFS/SMB Module Phase 1-3完成 - ✅ Archive Module Phase 1-4完成(2916行) - ✅ Download Center API完整实现 - ✅ S3兼容API实现(560行) Git配置修正: - ✅ 删除错误origin(gitea.momentry.ddns.net) - ✅ 删除m5max128(指向机器名) - ✅ 设置origin = m5max128gitea.momentry.ddns.net/admin/markbase - ✅ 设置m4minigitea = m4minigitea.momentry.ddns.net/warren/markbase 数据清理: - ✅ 删除38个临时SQLite(保留accusys.sqlite、demo.sqlite) - ✅ 删除.bak、test_*.bin、调试脚本等临时文件 - ✅ 删除临时目录(build/、download files/、raid_test/等) - ✅ 更新.gitignore排除临时文件 架构优化: - 52个文件修改,2434行新增,4739行删除 - Workspace成员整合(16个crate) - 数据库状态:accusys.sqlite保留(主demo测试) 远程同步: - ✅ 准备推送到m5max128gitea(远程Gitea) - ✅ 准备推送到m4minigitea(本地Gitea)
This commit is contained in:
@@ -11,7 +11,7 @@ fn temp_db() -> (Connection, String) {
|
||||
#[test]
|
||||
fn test_api_create_folder_node() {
|
||||
let (conn, user_id) = temp_db();
|
||||
let mut tree = FileTree::load(&conn, &user_id).unwrap();
|
||||
let mut tree = FileTree::load(&conn, &user_id, "untitled folder").unwrap();
|
||||
|
||||
let label = "TestFolder";
|
||||
let node_type = NodeType::Folder;
|
||||
@@ -20,7 +20,7 @@ fn test_api_create_folder_node() {
|
||||
let node_id = folder.node_id.clone();
|
||||
tree.insert_node(&conn, &folder).unwrap();
|
||||
|
||||
let loaded = FileTree::load(&conn, &user_id).unwrap();
|
||||
let loaded = FileTree::load(&conn, &user_id, "untitled folder").unwrap();
|
||||
let found = loaded.nodes.iter().find(|n| n.node_id == node_id);
|
||||
|
||||
assert!(found.is_some());
|
||||
@@ -33,7 +33,7 @@ fn test_api_create_folder_node() {
|
||||
#[test]
|
||||
fn test_api_create_file_node() {
|
||||
let (conn, user_id) = temp_db();
|
||||
let mut tree = FileTree::load(&conn, &user_id).unwrap();
|
||||
let mut tree = FileTree::load(&conn, &user_id, "untitled folder").unwrap();
|
||||
|
||||
let parent = FileTree::new_folder("Parent", None);
|
||||
tree.insert_node(&conn, &parent).unwrap();
|
||||
@@ -56,7 +56,7 @@ fn test_api_create_file_node() {
|
||||
let node_id = file_node.node_id.clone();
|
||||
tree.insert_node(&conn, &file_node).unwrap();
|
||||
|
||||
let loaded = FileTree::load(&conn, &user_id).unwrap();
|
||||
let loaded = FileTree::load(&conn, &user_id, "untitled folder").unwrap();
|
||||
let found = loaded.nodes.iter().find(|n| n.node_id == node_id);
|
||||
|
||||
assert!(found.is_some());
|
||||
@@ -70,7 +70,7 @@ fn test_api_create_file_node() {
|
||||
#[test]
|
||||
fn test_api_update_node() {
|
||||
let (conn, user_id) = temp_db();
|
||||
let mut tree = FileTree::load(&conn, &user_id).unwrap();
|
||||
let mut tree = FileTree::load(&conn, &user_id, "untitled folder").unwrap();
|
||||
|
||||
let mut folder = FileTree::new_folder("Original", None);
|
||||
tree.insert_node(&conn, &folder).unwrap();
|
||||
@@ -81,7 +81,7 @@ fn test_api_update_node() {
|
||||
|
||||
tree.update_node(&conn, &folder.node_id, &folder).unwrap();
|
||||
|
||||
let loaded = FileTree::load(&conn, &user_id).unwrap();
|
||||
let loaded = FileTree::load(&conn, &user_id, "untitled folder").unwrap();
|
||||
let found = loaded.nodes.iter().find(|n| n.node_id == folder.node_id);
|
||||
|
||||
assert!(found.is_some());
|
||||
@@ -94,7 +94,7 @@ fn test_api_update_node() {
|
||||
#[test]
|
||||
fn test_api_delete_node() {
|
||||
let (conn, user_id) = temp_db();
|
||||
let mut tree = FileTree::load(&conn, &user_id).unwrap();
|
||||
let mut tree = FileTree::load(&conn, &user_id, "untitled folder").unwrap();
|
||||
|
||||
let folder = FileTree::new_folder("ToDelete", None);
|
||||
let node_id = folder.node_id.clone();
|
||||
@@ -102,7 +102,7 @@ fn test_api_delete_node() {
|
||||
|
||||
tree.delete_node(&conn, &node_id).unwrap();
|
||||
|
||||
let loaded = FileTree::load(&conn, &user_id).unwrap();
|
||||
let loaded = FileTree::load(&conn, &user_id, "untitled folder").unwrap();
|
||||
let found = loaded.nodes.iter().find(|n| n.node_id == node_id);
|
||||
|
||||
assert!(found.is_none(), "deleted node should not be found");
|
||||
@@ -111,7 +111,7 @@ fn test_api_delete_node() {
|
||||
#[test]
|
||||
fn test_api_move_node() {
|
||||
let (conn, user_id) = temp_db();
|
||||
let mut tree = FileTree::load(&conn, &user_id).unwrap();
|
||||
let mut tree = FileTree::load(&conn, &user_id, "untitled folder").unwrap();
|
||||
|
||||
let root = FileTree::new_folder("Root", None);
|
||||
let child = FileTree::new_folder("Child", Some(root.node_id.clone()));
|
||||
@@ -121,7 +121,7 @@ fn test_api_move_node() {
|
||||
|
||||
tree.move_node(&conn, &child.node_id, None).unwrap();
|
||||
|
||||
let loaded = FileTree::load(&conn, &user_id).unwrap();
|
||||
let loaded = FileTree::load(&conn, &user_id, "untitled folder").unwrap();
|
||||
let moved = loaded.nodes.iter().find(|n| n.node_id == child.node_id);
|
||||
|
||||
assert!(moved.is_some());
|
||||
@@ -134,7 +134,7 @@ fn test_api_move_node() {
|
||||
#[test]
|
||||
fn test_api_update_alias() {
|
||||
let (conn, user_id) = temp_db();
|
||||
let mut tree = FileTree::load(&conn, &user_id).unwrap();
|
||||
let mut tree = FileTree::load(&conn, &user_id, "untitled folder").unwrap();
|
||||
|
||||
let folder = FileTree::new_folder("Videos", None);
|
||||
tree.insert_node(&conn, &folder).unwrap();
|
||||
@@ -146,7 +146,7 @@ fn test_api_update_alias() {
|
||||
tree.update_node_alias(&conn, &folder.node_id, "ja_jp", "動画")
|
||||
.unwrap();
|
||||
|
||||
let loaded = FileTree::load(&conn, &user_id).unwrap();
|
||||
let loaded = FileTree::load(&conn, &user_id, "untitled folder").unwrap();
|
||||
let found = loaded.nodes.iter().find(|n| n.node_id == folder.node_id);
|
||||
|
||||
assert!(found.is_some());
|
||||
@@ -168,7 +168,7 @@ fn test_api_update_alias() {
|
||||
#[test]
|
||||
fn test_api_get_tree() {
|
||||
let (conn, user_id) = temp_db();
|
||||
let mut tree = FileTree::load(&conn, &user_id).unwrap();
|
||||
let mut tree = FileTree::load(&conn, &user_id, "untitled folder").unwrap();
|
||||
|
||||
let root = FileTree::new_folder("Root", None);
|
||||
let child1 = FileTree::new_folder("Child1", Some(root.node_id.clone()));
|
||||
@@ -178,7 +178,7 @@ fn test_api_get_tree() {
|
||||
tree.insert_node(&conn, &child1).unwrap();
|
||||
tree.insert_node(&conn, &child2).unwrap();
|
||||
|
||||
let loaded = FileTree::load(&conn, &user_id).unwrap();
|
||||
let loaded = FileTree::load(&conn, &user_id, "untitled folder").unwrap();
|
||||
assert_eq!(loaded.nodes.len(), 3);
|
||||
assert_eq!(loaded.user_id, user_id);
|
||||
}
|
||||
@@ -186,7 +186,7 @@ fn test_api_get_tree() {
|
||||
#[test]
|
||||
fn test_api_build_tree_structure() {
|
||||
let (conn, user_id) = temp_db();
|
||||
let mut tree = FileTree::load(&conn, &user_id).unwrap();
|
||||
let mut tree = FileTree::load(&conn, &user_id, "untitled folder").unwrap();
|
||||
|
||||
let root = FileTree::new_folder("Root", None);
|
||||
let child1 = FileTree::new_folder("Child1", Some(root.node_id.clone()));
|
||||
@@ -228,14 +228,14 @@ fn test_api_add_location() {
|
||||
#[test]
|
||||
fn test_api_delete_all_nodes() {
|
||||
let (conn, user_id) = temp_db();
|
||||
let mut tree = FileTree::load(&conn, &user_id).unwrap();
|
||||
let mut tree = FileTree::load(&conn, &user_id, "untitled folder").unwrap();
|
||||
|
||||
for i in 1..=5 {
|
||||
let folder = FileTree::new_folder(&format!("Folder{}", i), None);
|
||||
tree.insert_node(&conn, &folder).unwrap();
|
||||
}
|
||||
|
||||
let loaded = FileTree::load(&conn, &user_id).unwrap();
|
||||
let loaded = FileTree::load(&conn, &user_id, "untitled folder").unwrap();
|
||||
assert_eq!(loaded.nodes.len(), 5);
|
||||
|
||||
for node in &loaded.nodes {
|
||||
@@ -246,6 +246,6 @@ fn test_api_delete_all_nodes() {
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
let after_delete = FileTree::load(&conn, &user_id).unwrap();
|
||||
let after_delete = FileTree::load(&conn, &user_id, "untitled folder").unwrap();
|
||||
assert_eq!(after_delete.nodes.len(), 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user