From 3c5878d3cce2c83d9a78902ce1e45b0d988a5c0b Mon Sep 17 00:00:00 2001 From: nutcas3 Date: Sat, 25 Apr 2026 03:02:36 +0300 Subject: [PATCH] feat: Replace unwrap_or with proper error handling in credit_management - Replace unwrap_or(0) with map_err for get operation in deduct_credit - Replace unwrap_or(0) with ? operator in check_credit - Add RedisOperation error mapping for current_balance retrieval --- apps/charging-engine/src/charging/credit_management.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/charging-engine/src/charging/credit_management.rs b/apps/charging-engine/src/charging/credit_management.rs index 5da07c4..391e376 100644 --- a/apps/charging-engine/src/charging/credit_management.rs +++ b/apps/charging-engine/src/charging/credit_management.rs @@ -38,7 +38,8 @@ impl crate::charging::ChargingEngine { let key = format!("credit:{}", ip); // Check current balance first - let current_balance: u64 = redis::AsyncCommands::get(&mut conn, &key).await.unwrap_or(0); + let current_balance: u64 = redis::AsyncCommands::get(&mut conn, &key).await + .map_err(|e| crate::errors::ChargingError::RedisOperation(e.to_string()))?; if current_balance < bytes_used { return Err(ChargingError::InsufficientCredit { @@ -55,7 +56,7 @@ impl crate::charging::ChargingEngine { } pub async fn check_credit(&self, ip: &str, bytes_requested: u64) -> ChargingResult { - let current_balance = self.get_balance(ip).await.unwrap_or(0); + let current_balance = self.get_balance(ip).await?; Ok(current_balance >= bytes_requested) }