improve postgresql performance
This commit is contained in:
@@ -5,6 +5,8 @@ use tokio::fs;
|
||||
use std::time::Duration;
|
||||
|
||||
use crate::infrastructure::services::file_metadata_cache::{FileMetadataCache, CacheEntryType, FileMetadata};
|
||||
use crate::domain::entities::file::File;
|
||||
use crate::domain::services::path_service::StoragePath;
|
||||
use crate::common::config::AppConfig;
|
||||
use crate::common::errors::DomainError;
|
||||
|
||||
@@ -177,4 +179,45 @@ impl FileMetadataManager {
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Obtiene información de una carpeta por ID
|
||||
pub async fn get_folder_by_id(&self, folder_id: &str) -> Result<File, MetadataError> {
|
||||
// Implementación simplificada que solo busca en la caché de metadatos
|
||||
// pero que devuelve una estructura mínima para el servicio de uso de almacenamiento
|
||||
|
||||
// En una implementación real, se consultaría un índice persistente
|
||||
// Para esta implementación básica, usaremos un método simplificado
|
||||
|
||||
// Crear un objeto StoragePath mínimo
|
||||
let storage_path = StoragePath::from_string(&format!("/{}", folder_id));
|
||||
|
||||
// Creamos una carpeta con información mínima
|
||||
// Esta implementación es un placeholder - en una situación real
|
||||
// consultaríamos el mapa folder_id -> folder_metadata en el sistema
|
||||
let now = std::time::SystemTime::now()
|
||||
.duration_since(std::time::UNIX_EPOCH)
|
||||
.unwrap_or_default()
|
||||
.as_secs();
|
||||
|
||||
// Verificamos si el nombre contiene información del usuario
|
||||
let folder_name = if folder_id.contains('-') {
|
||||
// Asumimos un formato UUID v4, intentamos usar "Mi Carpeta - username" como nombre
|
||||
format!("Mi Carpeta - usuario")
|
||||
} else {
|
||||
// Si no, usamos el ID como nombre
|
||||
folder_id.to_string()
|
||||
};
|
||||
|
||||
let folder = File::new_folder(
|
||||
folder_id.to_string(),
|
||||
folder_name,
|
||||
storage_path,
|
||||
None, // parent_id
|
||||
now, // created_at
|
||||
now, // updated_at
|
||||
)
|
||||
.map_err(|e| MetadataError::Unavailable(format!("Error creating folder entity: {}", e)))?;
|
||||
|
||||
Ok(folder)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user