fix: correct storage usage calculation by using direct SQL query

The original implementation tried to find user's home folder via
file_repository.list_files(None), but this only returns files (not folders)
and folders are in a separate table. This resulted in storage always
showing 0 bytes.

Fixed by using a direct SQL query to sum file sizes by user_id from
storage.files table, which is more efficient (O(1) vs recursive) and
correctly calculates storage for all files owned by the user.
This commit is contained in:
George Wu
2026-02-21 17:30:32 -08:00
parent 0f5b54eef5
commit 6907f0a057
2 changed files with 38 additions and 109 deletions
+2 -2
View File
@@ -398,7 +398,7 @@ impl AppServiceFactory {
/// Creates the storage usage service (requires database)
pub fn create_storage_usage_service(
&self,
repos: &RepositoryServices,
_repos: &RepositoryServices,
db_pool: &Arc<PgPool>,
) -> Arc<dyn crate::application::ports::storage_ports::StorageUsagePort> {
let user_repository = Arc::new(
@@ -406,7 +406,7 @@ impl AppServiceFactory {
);
let service = Arc::new(
crate::application::services::storage_usage_service::StorageUsageService::new(
repos.file_read_repository.clone(),
db_pool.clone(),
user_repository,
),
);