summaryrefslogtreecommitdiff
path: root/crates/vcs_data/src/data/local/member_held.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2025-11-06 22:11:18 +0800
committer魏曹先生 <1992414357@qq.com>2025-11-06 22:11:18 +0800
commitf871f39ebfd22b8d7c86de1cc172db2d73a3bf9d (patch)
tree2302b45418868e9cb8269e23188efa73c135893c /crates/vcs_data/src/data/local/member_held.rs
parent986a896062939c41f769b30c90d8d955b959f788 (diff)
feat: Add local data management modules (WIP)
- cached_sheet.rs: Cached sheet data management - local_sheet.rs: Local sheet mapping structure - member_held.rs: Member file holding status tracking - NOTE: These modules are still under development
Diffstat (limited to 'crates/vcs_data/src/data/local/member_held.rs')
-rw-r--r--crates/vcs_data/src/data/local/member_held.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/crates/vcs_data/src/data/local/member_held.rs b/crates/vcs_data/src/data/local/member_held.rs
new file mode 100644
index 0000000..e9e384d
--- /dev/null
+++ b/crates/vcs_data/src/data/local/member_held.rs
@@ -0,0 +1,25 @@
+use std::collections::HashMap;
+
+use cfg_file::ConfigFile;
+use serde::{Deserialize, Serialize};
+
+use crate::{
+ constants::CLIENT_FILE_MEMBER_HELD_NOSET,
+ data::{member::MemberId, vault::virtual_file::VirtualFileId},
+};
+
+#[derive(Debug, Default, Clone, Serialize, Deserialize, ConfigFile)]
+#[cfg_file(path = CLIENT_FILE_MEMBER_HELD_NOSET)]
+pub struct MemberHeld {
+ /// File holding status
+ held_status: HashMap<VirtualFileId, HeldStatus>,
+}
+
+#[derive(Debug, Default, Clone, Serialize, Deserialize)]
+pub enum HeldStatus {
+ HeldWith(MemberId), // Held, status changes are sync to the client
+ NotHeld, // Not held, status changes are sync to the client
+
+ #[default]
+ WantedToKnow, // Holding status is unknown, notify server must inform client
+}