style: apply cargo fmt to entire codebase
Standardize code formatting across all 173 Rust source files using rustfmt. No functional changes - purely cosmetic. This establishes a consistent code style baseline for the project going forward.
This commit is contained in:
@@ -8,22 +8,22 @@ pub use super::entity_errors::{FolderError, FolderResult};
|
||||
pub struct Folder {
|
||||
/// Unique identifier for the folder
|
||||
id: String,
|
||||
|
||||
|
||||
/// Name of the folder
|
||||
name: String,
|
||||
|
||||
|
||||
/// Path to the folder in the domain model
|
||||
storage_path: StoragePath,
|
||||
|
||||
|
||||
/// String representation of the path (for API compatibility)
|
||||
path_string: String,
|
||||
|
||||
|
||||
/// Parent folder ID (None if it's a root folder)
|
||||
parent_id: Option<String>,
|
||||
|
||||
|
||||
/// Creation timestamp
|
||||
created_at: u64,
|
||||
|
||||
|
||||
/// Last modification timestamp
|
||||
modified_at: u64,
|
||||
}
|
||||
@@ -56,15 +56,15 @@ impl Folder {
|
||||
if name.is_empty() || name.contains('/') || name.contains('\\') {
|
||||
return Err(FolderError::InvalidFolderName(name));
|
||||
}
|
||||
|
||||
|
||||
let now = std::time::SystemTime::now()
|
||||
.duration_since(std::time::UNIX_EPOCH)
|
||||
.unwrap_or_default()
|
||||
.as_secs();
|
||||
|
||||
|
||||
// Store the path string for serialization compatibility
|
||||
let path_string = storage_path.to_string();
|
||||
|
||||
|
||||
Ok(Self {
|
||||
id,
|
||||
name,
|
||||
@@ -75,7 +75,7 @@ impl Folder {
|
||||
modified_at: now,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/// Creates a folder with specific timestamps (for reconstruction)
|
||||
pub fn with_timestamps(
|
||||
id: String,
|
||||
@@ -89,10 +89,10 @@ impl Folder {
|
||||
if name.is_empty() || name.contains('/') || name.contains('\\') {
|
||||
return Err(FolderError::InvalidFolderName(name));
|
||||
}
|
||||
|
||||
|
||||
// Store the path string for serialization compatibility
|
||||
let path_string = storage_path.to_string();
|
||||
|
||||
|
||||
Ok(Self {
|
||||
id,
|
||||
name,
|
||||
@@ -103,36 +103,36 @@ impl Folder {
|
||||
modified_at,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// Getters
|
||||
pub fn id(&self) -> &str {
|
||||
&self.id
|
||||
}
|
||||
|
||||
|
||||
pub fn name(&self) -> &str {
|
||||
&self.name
|
||||
}
|
||||
|
||||
|
||||
pub fn storage_path(&self) -> &StoragePath {
|
||||
&self.storage_path
|
||||
}
|
||||
|
||||
|
||||
pub fn path_string(&self) -> &str {
|
||||
&self.path_string
|
||||
}
|
||||
|
||||
|
||||
pub fn parent_id(&self) -> Option<&str> {
|
||||
self.parent_id.as_deref()
|
||||
}
|
||||
|
||||
|
||||
pub fn created_at(&self) -> u64 {
|
||||
self.created_at
|
||||
}
|
||||
|
||||
|
||||
pub fn modified_at(&self) -> u64 {
|
||||
self.modified_at
|
||||
}
|
||||
|
||||
|
||||
/// Creates a new Folder instance from a DTO
|
||||
/// This function is primarily for conversions in batch handlers
|
||||
pub fn from_dto(
|
||||
@@ -145,7 +145,7 @@ impl Folder {
|
||||
) -> Self {
|
||||
// Create storage_path from the string
|
||||
let storage_path = StoragePath::from_string(&path);
|
||||
|
||||
|
||||
// Create directly without validation to avoid errors in DTO conversions
|
||||
Self {
|
||||
id,
|
||||
@@ -157,31 +157,31 @@ impl Folder {
|
||||
modified_at,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Methods to create new versions of the folder (immutable)
|
||||
|
||||
|
||||
/// Creates a new version of the folder with updated name
|
||||
pub fn with_name(&self, new_name: String) -> FolderResult<Self> {
|
||||
// Validate folder name
|
||||
if new_name.is_empty() || new_name.contains('/') || new_name.contains('\\') {
|
||||
return Err(FolderError::InvalidFolderName(new_name));
|
||||
}
|
||||
|
||||
|
||||
// Update path based on the name
|
||||
let parent_path = self.storage_path.parent();
|
||||
let new_storage_path = match parent_path {
|
||||
Some(parent) => parent.join(&new_name),
|
||||
None => StoragePath::from_string(&new_name),
|
||||
};
|
||||
|
||||
|
||||
// Update string representation
|
||||
let new_path_string = new_storage_path.to_string();
|
||||
|
||||
|
||||
let now = std::time::SystemTime::now()
|
||||
.duration_since(std::time::UNIX_EPOCH)
|
||||
.unwrap_or_default()
|
||||
.as_secs();
|
||||
|
||||
|
||||
Ok(Self {
|
||||
id: self.id.clone(),
|
||||
name: new_name,
|
||||
@@ -192,23 +192,27 @@ impl Folder {
|
||||
modified_at: now,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/// Creates a new version of the folder with updated parent
|
||||
pub fn with_parent(&self, parent_id: Option<String>, parent_path: Option<StoragePath>) -> FolderResult<Self> {
|
||||
pub fn with_parent(
|
||||
&self,
|
||||
parent_id: Option<String>,
|
||||
parent_path: Option<StoragePath>,
|
||||
) -> FolderResult<Self> {
|
||||
// We need a folder path to update the path
|
||||
let new_storage_path = match parent_path {
|
||||
Some(path) => path.join(&self.name),
|
||||
None => StoragePath::from_string(&self.name), // Root
|
||||
};
|
||||
|
||||
|
||||
// Update string representation
|
||||
let new_path_string = new_storage_path.to_string();
|
||||
|
||||
|
||||
let now = std::time::SystemTime::now()
|
||||
.duration_since(std::time::UNIX_EPOCH)
|
||||
.unwrap_or_default()
|
||||
.as_secs();
|
||||
|
||||
|
||||
Ok(Self {
|
||||
id: self.id.clone(),
|
||||
name: self.name.clone(),
|
||||
@@ -219,22 +223,22 @@ impl Folder {
|
||||
modified_at: now,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/// Returns an absolute path for this folder
|
||||
pub fn get_absolute_path<P: AsRef<std::path::Path>>(&self, root_path: P) -> std::path::PathBuf {
|
||||
let mut result = std::path::PathBuf::from(root_path.as_ref());
|
||||
|
||||
|
||||
// Skip leading '/' from path_string to avoid creating absolute path incorrectly
|
||||
let relative_path = if self.path_string.starts_with('/') {
|
||||
&self.path_string[1..]
|
||||
} else {
|
||||
&self.path_string
|
||||
};
|
||||
|
||||
|
||||
if !relative_path.is_empty() {
|
||||
result.push(relative_path);
|
||||
}
|
||||
|
||||
|
||||
result
|
||||
}
|
||||
}
|
||||
@@ -242,7 +246,7 @@ impl Folder {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
|
||||
#[test]
|
||||
fn test_folder_creation_with_valid_name() {
|
||||
let storage_path = StoragePath::from_string("/test/folder");
|
||||
@@ -252,10 +256,10 @@ mod tests {
|
||||
storage_path,
|
||||
None,
|
||||
);
|
||||
|
||||
|
||||
assert!(folder.is_ok());
|
||||
}
|
||||
|
||||
|
||||
#[test]
|
||||
fn test_folder_creation_with_invalid_name() {
|
||||
let storage_path = StoragePath::from_string("/test/invalid/folder");
|
||||
@@ -265,14 +269,14 @@ mod tests {
|
||||
storage_path,
|
||||
None,
|
||||
);
|
||||
|
||||
|
||||
assert!(folder.is_err());
|
||||
match folder {
|
||||
Err(FolderError::InvalidFolderName(_)) => (),
|
||||
_ => panic!("Expected InvalidFolderName error"),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#[test]
|
||||
fn test_folder_with_name() {
|
||||
let storage_path = StoragePath::from_string("/test/folder");
|
||||
@@ -281,12 +285,13 @@ mod tests {
|
||||
"old_name".to_string(),
|
||||
storage_path,
|
||||
None,
|
||||
).unwrap();
|
||||
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let renamed = folder.with_name("new_name".to_string());
|
||||
assert!(renamed.is_ok());
|
||||
let renamed = renamed.unwrap();
|
||||
assert_eq!(renamed.name(), "new_name");
|
||||
assert_eq!(renamed.id(), "123"); // The ID doesn't change
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user