diff options
| author | 魏曹先生 <1992414357@qq.com> | 2025-12-24 14:45:13 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2025-12-24 14:45:13 +0800 |
| commit | dd7cb12fad0c0a5268c01f548f9e94bfa60f2b66 (patch) | |
| tree | 7d5c6abc5165a6ddc5dd3d0b8f2b773daec84d2d /crates/vcs_data | |
| parent | bff0cb9b4226385962a2967a82064e0633b4d402 (diff) | |
Refactor vault and local workspace file storage structure
Diffstat (limited to 'crates/vcs_data')
| -rw-r--r-- | crates/vcs_data/src/constants.rs | 18 | ||||
| -rw-r--r-- | crates/vcs_data/src/data/vault/virtual_file.rs | 13 |
2 files changed, 18 insertions, 13 deletions
diff --git a/crates/vcs_data/src/constants.rs b/crates/vcs_data/src/constants.rs index 64bffc5..0963114 100644 --- a/crates/vcs_data/src/constants.rs +++ b/crates/vcs_data/src/constants.rs @@ -19,7 +19,9 @@ pub const SERVER_SUFFIX_SHEET_FILE: &str = ".json"; pub const SERVER_SUFFIX_SHEET_FILE_NO_DOT: &str = "json"; pub const REF_SHEET_NAME: &str = "ref"; pub const SERVER_PATH_SHEETS: &str = "./sheets/"; +pub const SERVER_PATH_SHARES: &str = "./sheets/shares/"; pub const SERVER_FILE_SHEET: &str = "./sheets/{sheet_name}.json"; +pub const SERVER_FILE_SHEET_SHARE: &str = "./sheets/shares/{sheet_name}/{share_id}.json"; // Server - Members pub const SERVER_PATH_MEMBERS: &str = "./members/"; @@ -54,17 +56,17 @@ pub const CLIENT_FOLDER_WORKSPACE_ROOT_NAME: &str = ".jv"; pub const CLIENT_FILE_WORKSPACE: &str = "./.jv/workspace.toml"; // Client - Latest Information -pub const CLIENT_FILE_LATEST_INFO: &str = "./.jv/cache/latest/{account}.vault.yaml"; +pub const CLIENT_FILE_LATEST_INFO: &str = "./.jv/latest/{account}.vault.yaml"; +pub const CLIENT_FILE_LATEST_DATA: &str = "./.jv/latest/{account}.file.yaml"; // Client - Local pub const CLIENT_SUFFIX_LOCAL_SHEET_FILE: &str = ".yaml"; pub const CLIENT_SUFFIX_CACHED_SHEET_FILE: &str = ".yaml"; pub const CLIENT_PATH_LOCAL_DRAFT: &str = "./.jv/drafts/{account}/{sheet_name}/"; -pub const CLIENT_PATH_LOCAL_SHEET: &str = "./.jv/local/"; -pub const CLIENT_PATH_CACHED_SHEET: &str = "./.jv/cache/sheet/"; -pub const CLIENT_FILE_LOCAL_SHEET: &str = "./.jv/local/{account}/{sheet_name}.yaml"; -pub const CLIENT_FILE_CACHED_SHEET: &str = "./.jv/cache/sheet/{sheet_name}.yaml"; -pub const CLIENT_FILE_LATEST_DATA: &str = "./.jv/cache/latest/{account}.file.yaml"; +pub const CLIENT_PATH_LOCAL_SHEET: &str = "./.jv/sheets/local/"; +pub const CLIENT_FILE_LOCAL_SHEET: &str = "./.jv/sheets/local/{account}/{sheet_name}.yaml"; +pub const CLIENT_PATH_CACHED_SHEET: &str = "./.jv/sheets/cached/"; +pub const CLIENT_FILE_CACHED_SHEET: &str = "./.jv/sheets/cached/{sheet_name}.yaml"; pub const CLIENT_FILE_LOCAL_SHEET_NOSET: &str = "./.jv/.temp/wrong.json"; pub const CLIENT_FILE_MEMBER_HELD_NOSET: &str = "./.jv/.temp/wrong.json"; @@ -77,7 +79,9 @@ pub const CLIENT_FILE_GITIGNORE: &str = "./.jv/.gitignore"; pub const CLIENT_CONTENT_GITIGNORE: &str = "# Git support for JVCS Workspace # Ignore cached datas -/cache/ +/sheets/cached/ +/latest/ + .vault_modified"; pub const CLIENT_FILE_VAULT_MODIFIED: &str = "./.jv/.vault_modified"; pub const CLIENT_FILE_TEMP_FILE: &str = "./.jv/.temp/download/{temp_name}"; diff --git a/crates/vcs_data/src/data/vault/virtual_file.rs b/crates/vcs_data/src/data/vault/virtual_file.rs index 5ff1b22..150a469 100644 --- a/crates/vcs_data/src/data/vault/virtual_file.rs +++ b/crates/vcs_data/src/data/vault/virtual_file.rs @@ -110,21 +110,22 @@ impl Vault { ) })?; - // Ensure the first part has exactly 8 characters - if first_part.len() != 8 { + // Ensure the first part has at least 4 characters + if first_part.len() < 4 { return Err(std::io::Error::new( std::io::ErrorKind::InvalidInput, - "Invalid virtual file ID format: first part must be 8 characters", + "Invalid virtual file ID format: first part must have at least 4 characters", ))?; } - // Split into 2-character chunks and join with path separator + // Take only the first 4 characters and split into two 2-character chunks + let first_four = &first_part[0..4]; let mut path = String::new(); - for i in (0..first_part.len()).step_by(2) { + for i in (0..first_four.len()).step_by(2) { if i > 0 { path.push('/'); } - path.push_str(&first_part[i..i + 2]); + path.push_str(&first_four[i..i + 2]); } Ok(path) |
