From aef38b117814c5eeda33a19739a2baeff4d89931 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Sat, 4 Oct 2025 06:03:56 +0000 Subject: [PATCH] Rename userroomid/roomuserid table handles to reflect counter value. Signed-off-by: Jason Volk --- src/service/rooms/state_cache/mod.rs | 43 +++++++++++-------------- src/service/rooms/state_cache/update.rs | 28 +++++++++++----- 2 files changed, 38 insertions(+), 33 deletions(-) diff --git a/src/service/rooms/state_cache/mod.rs b/src/service/rooms/state_cache/mod.rs index 647020d6..b0734b95 100644 --- a/src/service/rooms/state_cache/mod.rs +++ b/src/service/rooms/state_cache/mod.rs @@ -36,13 +36,13 @@ struct Data { roomid_joinedcount: Arc, roomserverids: Arc, roomuserid_invitecount: Arc, - roomuserid_joined: Arc, + roomuserid_joinedcount: Arc, roomuserid_leftcount: Arc, roomuserid_knockedcount: Arc, roomuseroncejoinedids: Arc, serverroomids: Arc, userroomid_invitestate: Arc, - userroomid_joined: Arc, + userroomid_joinedcount: Arc, userroomid_leftstate: Arc, userroomid_knockedstate: Arc, } @@ -63,13 +63,13 @@ impl crate::Service for Service { roomid_joinedcount: args.db["roomid_joinedcount"].clone(), roomserverids: args.db["roomserverids"].clone(), roomuserid_invitecount: args.db["roomuserid_invitecount"].clone(), - roomuserid_joined: args.db["roomuserid_joined"].clone(), + roomuserid_joinedcount: args.db["roomuserid_joined"].clone(), roomuserid_leftcount: args.db["roomuserid_leftcount"].clone(), roomuserid_knockedcount: args.db["roomuserid_knockedcount"].clone(), roomuseroncejoinedids: args.db["roomuseroncejoinedids"].clone(), serverroomids: args.db["serverroomids"].clone(), userroomid_invitestate: args.db["userroomid_invitestate"].clone(), - userroomid_joined: args.db["userroomid_joined"].clone(), + userroomid_joinedcount: args.db["userroomid_joined"].clone(), userroomid_leftstate: args.db["userroomid_leftstate"].clone(), userroomid_knockedstate: args.db["userroomid_knockedstate"].clone(), }, @@ -219,7 +219,7 @@ pub fn room_members<'a>( ) -> impl Stream + Send + 'a { let prefix = (room_id, Interfix); self.db - .roomuserid_joined + .roomuserid_joinedcount .keys_prefix(&prefix) .ignore_err() .map(|(_, user_id): (Ignore, &UserId)| user_id) @@ -376,7 +376,7 @@ pub async fn get_left_count(&self, room_id: &RoomId, user_id: &UserId) -> Result pub async fn get_joined_count(&self, room_id: &RoomId, user_id: &UserId) -> Result { let key = (room_id, user_id); self.db - .roomuserid_joined + .roomuserid_joinedcount .qry(&key) .await .deserialized() @@ -390,7 +390,7 @@ pub fn rooms_joined<'a>( user_id: &'a UserId, ) -> impl Stream + Send + 'a { self.db - .userroomid_joined + .userroomid_joinedcount .keys_raw_prefix(user_id) .ignore_err() .map(|(_, room_id): (Ignore, &RoomId)| room_id) @@ -540,18 +540,17 @@ pub async fn user_membership( #[tracing::instrument(skip(self), level = "debug")] pub async fn once_joined(&self, user_id: &UserId, room_id: &RoomId) -> bool { let key = (user_id, room_id); - self.db - .roomuseroncejoinedids - .qry(&key) - .await - .is_ok() + self.db.roomuseroncejoinedids.contains(&key).await } #[implement(Service)] #[tracing::instrument(skip(self), level = "trace")] pub async fn is_joined<'a>(&'a self, user_id: &'a UserId, room_id: &'a RoomId) -> bool { let key = (user_id, room_id); - self.db.userroomid_joined.qry(&key).await.is_ok() + self.db + .userroomid_joinedcount + .contains(&key) + .await } #[implement(Service)] @@ -560,9 +559,8 @@ pub async fn is_knocked<'a>(&'a self, user_id: &'a UserId, room_id: &'a RoomId) let key = (user_id, room_id); self.db .userroomid_knockedstate - .qry(&key) + .contains(&key) .await - .is_ok() } #[implement(Service)] @@ -571,20 +569,15 @@ pub async fn is_invited(&self, user_id: &UserId, room_id: &RoomId) -> bool { let key = (user_id, room_id); self.db .userroomid_invitestate - .qry(&key) + .contains(&key) .await - .is_ok() } #[implement(Service)] #[tracing::instrument(skip(self), level = "trace")] pub async fn is_left(&self, user_id: &UserId, room_id: &RoomId) -> bool { let key = (user_id, room_id); - self.db - .userroomid_leftstate - .qry(&key) - .await - .is_ok() + self.db.userroomid_leftstate.contains(&key).await } #[implement(Service)] @@ -629,16 +622,16 @@ pub async fn delete_room_join_counts(&self, room_id: &RoomId, force: bool) -> Re .await; self.db - .roomuserid_joined + .roomuserid_joinedcount .keys_prefix(&prefix) .ignore_err() .ready_for_each(|key: (&RoomId, &UserId)| { trace!("Removing key: {key:?}"); - self.db.roomuserid_joined.del(key); + self.db.roomuserid_joinedcount.del(key); let reverse_key = (key.1, key.0); trace!("Removing reverse key: {reverse_key:?}"); - self.db.userroomid_joined.del(reverse_key); + self.db.userroomid_joinedcount.del(reverse_key); }) .await; diff --git a/src/service/rooms/state_cache/update.rs b/src/service/rooms/state_cache/update.rs index cc105aa2..7a73a262 100644 --- a/src/service/rooms/state_cache/update.rs +++ b/src/service/rooms/state_cache/update.rs @@ -246,10 +246,10 @@ pub(crate) fn mark_as_joined(&self, user_id: &UserId, room_id: &RoomId, count: P let roomuser_id = serialize_key(roomuser_id).expect("failed to serialize roomuser_id"); self.db - .userroomid_joined + .userroomid_joinedcount .raw_aput::<8, _, _>(&userroom_id, count.into_unsigned()); self.db - .roomuserid_joined + .roomuserid_joinedcount .raw_aput::<8, _, _>(&roomuser_id, count.into_unsigned()); self.db @@ -294,8 +294,12 @@ pub(crate) fn mark_as_left(&self, user_id: &UserId, room_id: &RoomId, count: Pdu .roomuserid_leftcount .raw_aput::<8, _, _>(&roomuser_id, count.into_unsigned()); - self.db.userroomid_joined.remove(&userroom_id); - self.db.roomuserid_joined.remove(&roomuser_id); + self.db + .userroomid_joinedcount + .remove(&userroom_id); + self.db + .roomuserid_joinedcount + .remove(&roomuser_id); self.db .userroomid_invitestate @@ -339,8 +343,12 @@ pub(crate) fn _mark_as_knocked( .roomuserid_knockedcount .raw_aput::<8, _, _>(&roomuser_id, count.into_unsigned()); - self.db.userroomid_joined.remove(&userroom_id); - self.db.roomuserid_joined.remove(&roomuser_id); + self.db + .userroomid_joinedcount + .remove(&userroom_id); + self.db + .roomuserid_joinedcount + .remove(&roomuser_id); self.db .userroomid_invitestate @@ -396,8 +404,12 @@ pub(crate) async fn mark_as_invited( .roomuserid_invitecount .raw_aput::<8, _, _>(&roomuser_id, count.into_unsigned()); - self.db.userroomid_joined.remove(&userroom_id); - self.db.roomuserid_joined.remove(&roomuser_id); + self.db + .userroomid_joinedcount + .remove(&userroom_id); + self.db + .roomuserid_joinedcount + .remove(&roomuser_id); self.db.userroomid_leftstate.remove(&userroom_id); self.db.roomuserid_leftcount.remove(&roomuser_id);