summaryrefslogtreecommitdiff
path: root/crates/vcs_data/src/data/vault/virtual_file.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2025-11-17 11:49:49 +0800
committer魏曹先生 <1992414357@qq.com>2025-11-17 11:49:49 +0800
commit7b97b52af021500d8085c875d20215e8dc0f53cc (patch)
tree9b8219363380db3330bda75e28e364154224eca8 /crates/vcs_data/src/data/vault/virtual_file.rs
parente190d90594b17fb16849a13198af3f5152414e4c (diff)
feat: Add file status tracking and SHA1 hash system
- Implement SHA1 hash calculation module with async support - Add file status analysis for tracking moves, creates, and modifications - Enhance local file management with relative path handling - Update virtual file actions with improved tracking capabilities
Diffstat (limited to 'crates/vcs_data/src/data/vault/virtual_file.rs')
-rw-r--r--crates/vcs_data/src/data/vault/virtual_file.rs32
1 files changed, 29 insertions, 3 deletions
diff --git a/crates/vcs_data/src/data/vault/virtual_file.rs b/crates/vcs_data/src/data/vault/virtual_file.rs
index 221766f..6dd5208 100644
--- a/crates/vcs_data/src/data/vault/virtual_file.rs
+++ b/crates/vcs_data/src/data/vault/virtual_file.rs
@@ -22,7 +22,7 @@ use crate::{
pub type VirtualFileId = String;
pub type VirtualFileVersion = String;
-const VF_PREFIX: &str = "vf_";
+const VF_PREFIX: &str = "vf-";
const ID_PARAM: &str = "{vf_id}";
const ID_INDEX: &str = "{vf_index}";
const VERSION_PARAM: &str = "{vf_version}";
@@ -244,8 +244,6 @@ impl Vault {
}
fs::rename(receive_path, move_path).await?;
- //
-
Ok(new_id)
}
Err(e) => {
@@ -444,6 +442,13 @@ impl VirtualFileMeta {
&self.histories
}
+ /// Get the latest version of the virtual file
+ pub fn version_latest(&self) -> VirtualFileVersion {
+ // After creating a virtual file in `update_virtual_file_from_connection`,
+ // the Vec will never be empty, so unwrap is allowed here
+ self.histories.last().unwrap().clone()
+ }
+
/// Get the total number of versions for this virtual file
pub fn version_len(&self) -> i32 {
self.histories.len() as i32
@@ -470,4 +475,25 @@ impl VirtualFileMeta {
pub fn version_name(&self, version_num: i32) -> Option<VirtualFileVersion> {
self.histories.get(version_num as usize).cloned()
}
+
+ /// Get the member who holds the edit right of the file
+ pub fn hold_member(&self) -> &MemberId {
+ &self.hold_member
+ }
+
+ /// Get the version descriptions for all versions
+ pub fn version_descriptions(
+ &self,
+ ) -> &HashMap<VirtualFileVersion, VirtualFileVersionDescription> {
+ &self.version_description
+ }
+
+ /// Get the version description for a given version
+ pub fn version_description(
+ &self,
+ version: VirtualFileVersion,
+ ) -> Option<&VirtualFileVersionDescription> {
+ let desc = self.version_descriptions();
+ desc.get(&version)
+ }
}