From 8a405af5e1c2310cc53bcd5718471bf280967322 Mon Sep 17 00:00:00 2001 From: "M.Schmidt" Date: Mon, 13 Jul 2026 19:51:40 +0200 Subject: [PATCH] refactor(drive): match DriveKind directly instead of Drive::is_personal() Drops the boolean is_personal() wrapper in favor of matching DriveKind::Personal/Shared at the two call sites, matching the exhaustive-match convention already used for DriveKind elsewhere (as_str, parse, DriveKindDto::from). --- .../services/drive_management_service.rs | 5 ++++- src/common/di.rs | 15 +++++++++------ src/domain/entities/drive.rs | 6 ------ 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/application/services/drive_management_service.rs b/src/application/services/drive_management_service.rs index b2b34537..eba53de1 100644 --- a/src/application/services/drive_management_service.rs +++ b/src/application/services/drive_management_service.rs @@ -556,7 +556,10 @@ impl DriveManagementService { let drive = self.drive_repo.get_by_id(drive_id).await.map_err(|e| { DomainError::internal_error("Drive", format!("Failed to fetch drive: {e:?}")) })?; - if drive.drive.is_personal() { + if matches!( + drive.drive.kind, + crate::domain::entities::drive::DriveKind::Personal + ) { tracing::info!( target: "audit", event = "drive_membership.rejected", diff --git a/src/common/di.rs b/src/common/di.rs index 8700b55d..d64f79de 100644 --- a/src/common/di.rs +++ b/src/common/di.rs @@ -2169,12 +2169,15 @@ impl AppState { } let drive = self.drive_repo.get_by_id(drive_id).await.ok()?.drive; - if drive.is_personal() { - let (used, quota) = storage_svc.get_user_storage_info(user_id).await.ok()?; - Some((used, (quota > 0).then(|| (quota - used).max(0)))) - } else { - let used = drive.used_bytes; - Some((used, drive.quota_bytes.map(|q| (q - used).max(0)))) + match drive.kind { + crate::domain::entities::drive::DriveKind::Personal => { + let (used, quota) = storage_svc.get_user_storage_info(user_id).await.ok()?; + Some((used, (quota > 0).then(|| (quota - used).max(0)))) + } + crate::domain::entities::drive::DriveKind::Shared => { + let used = drive.used_bytes; + Some((used, drive.quota_bytes.map(|q| (q - used).max(0)))) + } } } } diff --git a/src/domain/entities/drive.rs b/src/domain/entities/drive.rs index 7d1f562b..274b7b70 100644 --- a/src/domain/entities/drive.rs +++ b/src/domain/entities/drive.rs @@ -131,12 +131,6 @@ impl Drive { self.default_for_user == Some(user_id) } - /// `true` if this drive is a personal drive of any kind (default or - /// secondary). Encapsulates the kind check at the call site. - pub fn is_personal(&self) -> bool { - matches!(self.kind, DriveKind::Personal) - } - /// Typed view of `policies` for enforcement code. Lenient deserialise: /// unknown keys are preserved on disk (the column stays the canonical /// JSONB bag) but ignored here, missing keys default to `false`.