summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/vcs_data/src/constants.rs18
-rw-r--r--crates/vcs_data/src/data/vault/virtual_file.rs13
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)