This commit is contained in:
2025-02-27 23:20:25 +01:00
commit 6339336135
8 changed files with 3296 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
use std::collections::{HashMap, HashSet};
use tokio::sync::RwLock;
pub struct SubscriptionManager {
pub subscriptions: RwLock<HashMap<String, HashSet<u64>>>,
}
impl SubscriptionManager {
pub fn new() -> Self {
Self {
subscriptions: RwLock::new(HashMap::new()),
}
}
pub async fn init(&self) {
println!("SubscriptionManager initialized");
}
pub async fn subscribe(&self, telegram_user_id: u64, username: String) {
self.subscriptions
.write()
.await
.entry(username)
.or_insert(HashSet::new())
.insert(telegram_user_id);
}
pub async fn unsubscribe(&self, telegram_user_id: u64, username: String) {
self.subscriptions
.write()
.await
.entry(username)
.and_modify(|set| {
set.remove(&telegram_user_id);
});
}
}