improve postgresql performance
This commit is contained in:
@@ -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(¤t_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;
|
||||
|
||||
|
||||
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user