From c9c493fd701f37c608dc07f25c4e1bb9dca232c0 Mon Sep 17 00:00:00 2001 From: nutcas3 Date: Sat, 25 Apr 2026 03:03:37 +0300 Subject: [PATCH] feat: Add ChargingRule enum with string conversion for charging decisions - Add ChargingRule enum with 7 variants (Allowed, InsufficientCredit, DataLimitExceeded, VoiceLimitExceeded, SmsLimitExceeded, UserBlocked, Blocked) - Add Debug, Clone, Serialize, Deserialize, PartialEq, Eq derives to ChargingRule - Add as_str method to convert ChargingRule variants to uppercase string constants --- apps/charging-engine/src/charging/types.rs | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/apps/charging-engine/src/charging/types.rs b/apps/charging-engine/src/charging/types.rs index 9a3d015..ab71fb4 100644 --- a/apps/charging-engine/src/charging/types.rs +++ b/apps/charging-engine/src/charging/types.rs @@ -2,6 +2,31 @@ use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use redis::{FromRedisValue, ToRedisArgs, ToSingleRedisArg}; +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] +pub enum ChargingRule { + Allowed, + InsufficientCredit, + DataLimitExceeded, + VoiceLimitExceeded, + SmsLimitExceeded, + UserBlocked, + Blocked, +} + +impl ChargingRule { + pub fn as_str(&self) -> &str { + match self { + ChargingRule::Allowed => "ALLOWED", + ChargingRule::InsufficientCredit => "INSUFFICIENT_CREDIT", + ChargingRule::DataLimitExceeded => "DATA_LIMIT_EXCEEDED", + ChargingRule::VoiceLimitExceeded => "VOICE_LIMIT_EXCEEDED", + ChargingRule::SmsLimitExceeded => "SMS_LIMIT_EXCEEDED", + ChargingRule::UserBlocked => "USER_BLOCKED", + ChargingRule::Blocked => "BLOCKED", + } + } +} + #[derive(Debug, Clone, Serialize, Deserialize)] pub struct SubscriberAccount { pub imsi: String,