style: cargo fmt --all
This commit is contained in:
@@ -733,18 +733,16 @@ impl BatchOperationService {
|
||||
}
|
||||
|
||||
// ── Finalize ─────────────────────────────────────────────────────
|
||||
let mut compat_writer = zip.close().await.map_err(|e| {
|
||||
BatchOperationError::Internal(format!("ZIP finalize error: {}", e))
|
||||
})?;
|
||||
compat_writer.close().await.map_err(|e| {
|
||||
BatchOperationError::Internal(format!("ZIP flush error: {}", e))
|
||||
})?;
|
||||
let mut compat_writer = zip
|
||||
.close()
|
||||
.await
|
||||
.map_err(|e| BatchOperationError::Internal(format!("ZIP finalize error: {}", e)))?;
|
||||
compat_writer
|
||||
.close()
|
||||
.await
|
||||
.map_err(|e| BatchOperationError::Internal(format!("ZIP flush error: {}", e)))?;
|
||||
|
||||
let file_size = temp
|
||||
.as_file()
|
||||
.metadata()
|
||||
.map(|m| m.len())
|
||||
.unwrap_or(0);
|
||||
let file_size = temp.as_file().metadata().map(|m| m.len()).unwrap_or(0);
|
||||
|
||||
info!(
|
||||
"Batch download ZIP created: {} bytes in {}ms",
|
||||
@@ -776,17 +774,18 @@ impl BatchOperationService {
|
||||
let mut stream = std::pin::Pin::from(stream);
|
||||
|
||||
while let Some(chunk) = stream.next().await {
|
||||
let bytes = chunk.map_err(|e| {
|
||||
BatchOperationError::Internal(format!("stream read: {}", e))
|
||||
})?;
|
||||
writer.write_all(&bytes).await.map_err(|e| {
|
||||
BatchOperationError::Internal(format!("zip chunk write: {}", e))
|
||||
})?;
|
||||
let bytes =
|
||||
chunk.map_err(|e| BatchOperationError::Internal(format!("stream read: {}", e)))?;
|
||||
writer
|
||||
.write_all(&bytes)
|
||||
.await
|
||||
.map_err(|e| BatchOperationError::Internal(format!("zip chunk write: {}", e)))?;
|
||||
}
|
||||
|
||||
writer.close().await.map_err(|e| {
|
||||
BatchOperationError::Internal(format!("zip entry close: {}", e))
|
||||
})?;
|
||||
writer
|
||||
.close()
|
||||
.await
|
||||
.map_err(|e| BatchOperationError::Internal(format!("zip entry close: {}", e)))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
@@ -194,12 +194,11 @@ impl FileUploadUseCase for FileUploadService {
|
||||
};
|
||||
|
||||
// Spool to temp file + hash
|
||||
let temp = tempfile::NamedTempFile::new().map_err(|e| {
|
||||
DomainError::internal_error("FileUpload", format!("temp file: {e}"))
|
||||
})?;
|
||||
tokio::fs::write(temp.path(), content).await.map_err(|e| {
|
||||
DomainError::internal_error("FileUpload", format!("write temp: {e}"))
|
||||
})?;
|
||||
let temp = tempfile::NamedTempFile::new()
|
||||
.map_err(|e| DomainError::internal_error("FileUpload", format!("temp file: {e}")))?;
|
||||
tokio::fs::write(temp.path(), content)
|
||||
.await
|
||||
.map_err(|e| DomainError::internal_error("FileUpload", format!("write temp: {e}")))?;
|
||||
let hash = hex::encode(Sha256::digest(content));
|
||||
|
||||
let file = self
|
||||
@@ -224,12 +223,11 @@ impl FileUploadUseCase for FileUploadService {
|
||||
/// then delegates to the streaming update/create path.
|
||||
async fn update_file(&self, path: &str, content: &[u8]) -> Result<(), DomainError> {
|
||||
// Spool to temp file + hash
|
||||
let temp = tempfile::NamedTempFile::new().map_err(|e| {
|
||||
DomainError::internal_error("FileUpload", format!("temp file: {e}"))
|
||||
})?;
|
||||
tokio::fs::write(temp.path(), content).await.map_err(|e| {
|
||||
DomainError::internal_error("FileUpload", format!("write temp: {e}"))
|
||||
})?;
|
||||
let temp = tempfile::NamedTempFile::new()
|
||||
.map_err(|e| DomainError::internal_error("FileUpload", format!("temp file: {e}")))?;
|
||||
tokio::fs::write(temp.path(), content)
|
||||
.await
|
||||
.map_err(|e| DomainError::internal_error("FileUpload", format!("write temp: {e}")))?;
|
||||
let hash = hex::encode(Sha256::digest(content));
|
||||
|
||||
self.update_file_streaming(
|
||||
|
||||
@@ -272,7 +272,11 @@ impl SearchUseCase for SearchService {
|
||||
* - Human-readable size formatting
|
||||
* - Pagination
|
||||
*/
|
||||
async fn search(&self, criteria: SearchCriteriaDto, user_id: &str) -> Result<Arc<SearchResultsDto>> {
|
||||
async fn search(
|
||||
&self,
|
||||
criteria: SearchCriteriaDto,
|
||||
user_id: &str,
|
||||
) -> Result<Arc<SearchResultsDto>> {
|
||||
let start = Instant::now();
|
||||
|
||||
// Try to get from cache
|
||||
@@ -369,7 +373,8 @@ impl SearchUseCase for SearchService {
|
||||
criteria.sort_by.clone(),
|
||||
));
|
||||
|
||||
self.store_in_cache(cache_key, Arc::clone(&search_results)).await;
|
||||
self.store_in_cache(cache_key, Arc::clone(&search_results))
|
||||
.await;
|
||||
return Ok(search_results);
|
||||
}
|
||||
|
||||
@@ -454,7 +459,8 @@ impl SearchUseCase for SearchService {
|
||||
));
|
||||
|
||||
// Store in cache — Arc::clone is ~1 ns (atomic increment)
|
||||
self.store_in_cache(cache_key, Arc::clone(&search_results)).await;
|
||||
self.store_in_cache(cache_key, Arc::clone(&search_results))
|
||||
.await;
|
||||
|
||||
Ok(search_results)
|
||||
}
|
||||
|
||||
@@ -510,7 +510,13 @@ mod tests {
|
||||
&self,
|
||||
_folder_id: &str,
|
||||
) -> Result<
|
||||
std::pin::Pin<Box<dyn futures::Stream<Item = Result<crate::domain::entities::file::File, DomainError>> + Send>>,
|
||||
std::pin::Pin<
|
||||
Box<
|
||||
dyn futures::Stream<
|
||||
Item = Result<crate::domain::entities::file::File, DomainError>,
|
||||
> + Send,
|
||||
>,
|
||||
>,
|
||||
DomainError,
|
||||
> {
|
||||
Ok(Box::pin(futures::stream::empty()))
|
||||
|
||||
@@ -208,7 +208,10 @@ impl FileReadPort for MockFileRepository {
|
||||
async fn stream_files_in_subtree(
|
||||
&self,
|
||||
_folder_id: &str,
|
||||
) -> std::result::Result<Pin<Box<dyn Stream<Item = std::result::Result<File, DomainError>> + Send>>, DomainError> {
|
||||
) -> std::result::Result<
|
||||
Pin<Box<dyn Stream<Item = std::result::Result<File, DomainError>> + Send>>,
|
||||
DomainError,
|
||||
> {
|
||||
Ok(Box::pin(futures::stream::empty()))
|
||||
}
|
||||
}
|
||||
@@ -502,7 +505,10 @@ mod tests {
|
||||
// Arrange
|
||||
let trashed_files = Arc::new(Mutex::new(HashMap::new()));
|
||||
let trashed_folders = Arc::new(Mutex::new(HashMap::new()));
|
||||
let trash_repo = Arc::new(MockTrashRepository::new(trashed_files.clone(), trashed_folders.clone()));
|
||||
let trash_repo = Arc::new(MockTrashRepository::new(
|
||||
trashed_files.clone(),
|
||||
trashed_folders.clone(),
|
||||
));
|
||||
let file_repo = Arc::new(MockFileRepository::new(trashed_files));
|
||||
let folder_repo = Arc::new(MockFolderRepository::new(trashed_folders));
|
||||
|
||||
@@ -573,7 +579,10 @@ mod tests {
|
||||
// Arrange
|
||||
let trashed_files = Arc::new(Mutex::new(HashMap::new()));
|
||||
let trashed_folders = Arc::new(Mutex::new(HashMap::new()));
|
||||
let trash_repo = Arc::new(MockTrashRepository::new(trashed_files.clone(), trashed_folders.clone()));
|
||||
let trash_repo = Arc::new(MockTrashRepository::new(
|
||||
trashed_files.clone(),
|
||||
trashed_folders.clone(),
|
||||
));
|
||||
let file_repo = Arc::new(MockFileRepository::new(trashed_files));
|
||||
let folder_repo = Arc::new(MockFolderRepository::new(trashed_folders));
|
||||
|
||||
@@ -635,7 +644,10 @@ mod tests {
|
||||
// Arrange
|
||||
let trashed_files = Arc::new(Mutex::new(HashMap::new()));
|
||||
let trashed_folders = Arc::new(Mutex::new(HashMap::new()));
|
||||
let trash_repo = Arc::new(MockTrashRepository::new(trashed_files.clone(), trashed_folders.clone()));
|
||||
let trash_repo = Arc::new(MockTrashRepository::new(
|
||||
trashed_files.clone(),
|
||||
trashed_folders.clone(),
|
||||
));
|
||||
let file_repo = Arc::new(MockFileRepository::new(trashed_files));
|
||||
let folder_repo = Arc::new(MockFolderRepository::new(trashed_folders));
|
||||
|
||||
@@ -702,7 +714,10 @@ mod tests {
|
||||
// Arrange
|
||||
let trashed_files = Arc::new(Mutex::new(HashMap::new()));
|
||||
let trashed_folders = Arc::new(Mutex::new(HashMap::new()));
|
||||
let trash_repo = Arc::new(MockTrashRepository::new(trashed_files.clone(), trashed_folders.clone()));
|
||||
let trash_repo = Arc::new(MockTrashRepository::new(
|
||||
trashed_files.clone(),
|
||||
trashed_folders.clone(),
|
||||
));
|
||||
let file_repo = Arc::new(MockFileRepository::new(trashed_files));
|
||||
let folder_repo = Arc::new(MockFolderRepository::new(trashed_folders));
|
||||
|
||||
@@ -768,7 +783,10 @@ mod tests {
|
||||
// Arrange
|
||||
let trashed_files = Arc::new(Mutex::new(HashMap::new()));
|
||||
let trashed_folders = Arc::new(Mutex::new(HashMap::new()));
|
||||
let trash_repo = Arc::new(MockTrashRepository::new(trashed_files.clone(), trashed_folders.clone()));
|
||||
let trash_repo = Arc::new(MockTrashRepository::new(
|
||||
trashed_files.clone(),
|
||||
trashed_folders.clone(),
|
||||
));
|
||||
let file_repo = Arc::new(MockFileRepository::new(trashed_files));
|
||||
let folder_repo = Arc::new(MockFolderRepository::new(trashed_folders));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user