improve postgresql performance

This commit is contained in:
DioCrafts
2025-04-09 00:21:20 +02:00
parent 7473ee438f
commit 8f1d213526
36 changed files with 2191 additions and 233 deletions
@@ -212,6 +212,28 @@ async fn get_current_user(
let auth_service = state.auth_service.as_ref()
.ok_or_else(|| AppError::internal_error("Servicio de autenticación no configurado"))?;
// Primero, intentamos actualizar las estadísticas de uso de almacenamiento
// Si existe el servicio de uso de almacenamiento
if let Some(storage_usage_service) = state.storage_usage_service.as_ref() {
// Actualizamos el uso de almacenamiento en segundo plano
// No bloqueamos la respuesta con esta actualización
let user_id = current_user.id.clone();
let storage_service = storage_usage_service.clone();
// Ejecutar asincronamente para no retrasar la respuesta
tokio::spawn(async move {
match storage_service.update_user_storage_usage(&user_id).await {
Ok(usage) => {
tracing::info!("Updated storage usage for user {}: {} bytes", user_id, usage);
},
Err(e) => {
tracing::warn!("Failed to update storage usage for user {}: {}", user_id, e);
}
}
});
}
// Obtener los datos del usuario (que puede tener valores de almacenamiento desactualizados)
let user = auth_service.auth_application_service.get_user_by_id(&current_user.id).await?;
Ok((StatusCode::OK, Json(user)))
@@ -8,26 +8,20 @@
*/
use axum::{
Router,
extract::{self},
Router,
response::Response,
http::{StatusCode, header, HeaderName, Request, Method},
http::{StatusCode, header, HeaderName, Request},
body::{Body, self},
routing::MethodRouter,
};
use std::collections::HashMap;
use std::sync::Arc;
use std::io::{Cursor, Read};
use uuid::Uuid;
use http_body_util::BodyExt;
use chrono::Utc;
use bytes::Buf;
use tower::service_fn;
use crate::common::di::AppState;
use crate::application::adapters::webdav_adapter::{WebDavAdapter, PropFindRequest, LockInfo, LockScope, LockType, WebDavError};
use crate::application::adapters::webdav_adapter::{WebDavAdapter, PropFindRequest, LockInfo, LockScope, LockType};
use crate::interfaces::middleware::auth::CurrentUser;
use crate::application::dtos::file_dto::FileDto;
use crate::application::dtos::folder_dto::FolderDto;
use crate::common::errors::AppError;
+1
View File
@@ -97,6 +97,7 @@ pub fn create_api_routes(
path_resolver: path_resolver.clone(),
trash_repository: None, // This is OK to be None since we use the trash_service directly
},
storage_usage_service: None,
applications: crate::common::di::ApplicationServices {
folder_service: folder_service.clone(),
file_service: file_service.clone(),