Rename userroomid/roomuserid table handles to reflect counter value.

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2025-10-04 06:03:56 +00:00
parent 4743a8d968
commit aef38b1178
2 changed files with 38 additions and 33 deletions

View File

@@ -36,13 +36,13 @@ struct Data {
roomid_joinedcount: Arc<Map>, roomid_joinedcount: Arc<Map>,
roomserverids: Arc<Map>, roomserverids: Arc<Map>,
roomuserid_invitecount: Arc<Map>, roomuserid_invitecount: Arc<Map>,
roomuserid_joined: Arc<Map>, roomuserid_joinedcount: Arc<Map>,
roomuserid_leftcount: Arc<Map>, roomuserid_leftcount: Arc<Map>,
roomuserid_knockedcount: Arc<Map>, roomuserid_knockedcount: Arc<Map>,
roomuseroncejoinedids: Arc<Map>, roomuseroncejoinedids: Arc<Map>,
serverroomids: Arc<Map>, serverroomids: Arc<Map>,
userroomid_invitestate: Arc<Map>, userroomid_invitestate: Arc<Map>,
userroomid_joined: Arc<Map>, userroomid_joinedcount: Arc<Map>,
userroomid_leftstate: Arc<Map>, userroomid_leftstate: Arc<Map>,
userroomid_knockedstate: Arc<Map>, userroomid_knockedstate: Arc<Map>,
} }
@@ -63,13 +63,13 @@ impl crate::Service for Service {
roomid_joinedcount: args.db["roomid_joinedcount"].clone(), roomid_joinedcount: args.db["roomid_joinedcount"].clone(),
roomserverids: args.db["roomserverids"].clone(), roomserverids: args.db["roomserverids"].clone(),
roomuserid_invitecount: args.db["roomuserid_invitecount"].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_leftcount: args.db["roomuserid_leftcount"].clone(),
roomuserid_knockedcount: args.db["roomuserid_knockedcount"].clone(), roomuserid_knockedcount: args.db["roomuserid_knockedcount"].clone(),
roomuseroncejoinedids: args.db["roomuseroncejoinedids"].clone(), roomuseroncejoinedids: args.db["roomuseroncejoinedids"].clone(),
serverroomids: args.db["serverroomids"].clone(), serverroomids: args.db["serverroomids"].clone(),
userroomid_invitestate: args.db["userroomid_invitestate"].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_leftstate: args.db["userroomid_leftstate"].clone(),
userroomid_knockedstate: args.db["userroomid_knockedstate"].clone(), userroomid_knockedstate: args.db["userroomid_knockedstate"].clone(),
}, },
@@ -219,7 +219,7 @@ pub fn room_members<'a>(
) -> impl Stream<Item = &UserId> + Send + 'a { ) -> impl Stream<Item = &UserId> + Send + 'a {
let prefix = (room_id, Interfix); let prefix = (room_id, Interfix);
self.db self.db
.roomuserid_joined .roomuserid_joinedcount
.keys_prefix(&prefix) .keys_prefix(&prefix)
.ignore_err() .ignore_err()
.map(|(_, user_id): (Ignore, &UserId)| user_id) .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<u64> { pub async fn get_joined_count(&self, room_id: &RoomId, user_id: &UserId) -> Result<u64> {
let key = (room_id, user_id); let key = (room_id, user_id);
self.db self.db
.roomuserid_joined .roomuserid_joinedcount
.qry(&key) .qry(&key)
.await .await
.deserialized() .deserialized()
@@ -390,7 +390,7 @@ pub fn rooms_joined<'a>(
user_id: &'a UserId, user_id: &'a UserId,
) -> impl Stream<Item = &RoomId> + Send + 'a { ) -> impl Stream<Item = &RoomId> + Send + 'a {
self.db self.db
.userroomid_joined .userroomid_joinedcount
.keys_raw_prefix(user_id) .keys_raw_prefix(user_id)
.ignore_err() .ignore_err()
.map(|(_, room_id): (Ignore, &RoomId)| room_id) .map(|(_, room_id): (Ignore, &RoomId)| room_id)
@@ -540,18 +540,17 @@ pub async fn user_membership(
#[tracing::instrument(skip(self), level = "debug")] #[tracing::instrument(skip(self), level = "debug")]
pub async fn once_joined(&self, user_id: &UserId, room_id: &RoomId) -> bool { pub async fn once_joined(&self, user_id: &UserId, room_id: &RoomId) -> bool {
let key = (user_id, room_id); let key = (user_id, room_id);
self.db self.db.roomuseroncejoinedids.contains(&key).await
.roomuseroncejoinedids
.qry(&key)
.await
.is_ok()
} }
#[implement(Service)] #[implement(Service)]
#[tracing::instrument(skip(self), level = "trace")] #[tracing::instrument(skip(self), level = "trace")]
pub async fn is_joined<'a>(&'a self, user_id: &'a UserId, room_id: &'a RoomId) -> bool { pub async fn is_joined<'a>(&'a self, user_id: &'a UserId, room_id: &'a RoomId) -> bool {
let key = (user_id, room_id); let key = (user_id, room_id);
self.db.userroomid_joined.qry(&key).await.is_ok() self.db
.userroomid_joinedcount
.contains(&key)
.await
} }
#[implement(Service)] #[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); let key = (user_id, room_id);
self.db self.db
.userroomid_knockedstate .userroomid_knockedstate
.qry(&key) .contains(&key)
.await .await
.is_ok()
} }
#[implement(Service)] #[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); let key = (user_id, room_id);
self.db self.db
.userroomid_invitestate .userroomid_invitestate
.qry(&key) .contains(&key)
.await .await
.is_ok()
} }
#[implement(Service)] #[implement(Service)]
#[tracing::instrument(skip(self), level = "trace")] #[tracing::instrument(skip(self), level = "trace")]
pub async fn is_left(&self, user_id: &UserId, room_id: &RoomId) -> bool { pub async fn is_left(&self, user_id: &UserId, room_id: &RoomId) -> bool {
let key = (user_id, room_id); let key = (user_id, room_id);
self.db self.db.userroomid_leftstate.contains(&key).await
.userroomid_leftstate
.qry(&key)
.await
.is_ok()
} }
#[implement(Service)] #[implement(Service)]
@@ -629,16 +622,16 @@ pub async fn delete_room_join_counts(&self, room_id: &RoomId, force: bool) -> Re
.await; .await;
self.db self.db
.roomuserid_joined .roomuserid_joinedcount
.keys_prefix(&prefix) .keys_prefix(&prefix)
.ignore_err() .ignore_err()
.ready_for_each(|key: (&RoomId, &UserId)| { .ready_for_each(|key: (&RoomId, &UserId)| {
trace!("Removing key: {key:?}"); trace!("Removing key: {key:?}");
self.db.roomuserid_joined.del(key); self.db.roomuserid_joinedcount.del(key);
let reverse_key = (key.1, key.0); let reverse_key = (key.1, key.0);
trace!("Removing reverse key: {reverse_key:?}"); trace!("Removing reverse key: {reverse_key:?}");
self.db.userroomid_joined.del(reverse_key); self.db.userroomid_joinedcount.del(reverse_key);
}) })
.await; .await;

View File

@@ -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"); let roomuser_id = serialize_key(roomuser_id).expect("failed to serialize roomuser_id");
self.db self.db
.userroomid_joined .userroomid_joinedcount
.raw_aput::<8, _, _>(&userroom_id, count.into_unsigned()); .raw_aput::<8, _, _>(&userroom_id, count.into_unsigned());
self.db self.db
.roomuserid_joined .roomuserid_joinedcount
.raw_aput::<8, _, _>(&roomuser_id, count.into_unsigned()); .raw_aput::<8, _, _>(&roomuser_id, count.into_unsigned());
self.db self.db
@@ -294,8 +294,12 @@ pub(crate) fn mark_as_left(&self, user_id: &UserId, room_id: &RoomId, count: Pdu
.roomuserid_leftcount .roomuserid_leftcount
.raw_aput::<8, _, _>(&roomuser_id, count.into_unsigned()); .raw_aput::<8, _, _>(&roomuser_id, count.into_unsigned());
self.db.userroomid_joined.remove(&userroom_id); self.db
self.db.roomuserid_joined.remove(&roomuser_id); .userroomid_joinedcount
.remove(&userroom_id);
self.db
.roomuserid_joinedcount
.remove(&roomuser_id);
self.db self.db
.userroomid_invitestate .userroomid_invitestate
@@ -339,8 +343,12 @@ pub(crate) fn _mark_as_knocked(
.roomuserid_knockedcount .roomuserid_knockedcount
.raw_aput::<8, _, _>(&roomuser_id, count.into_unsigned()); .raw_aput::<8, _, _>(&roomuser_id, count.into_unsigned());
self.db.userroomid_joined.remove(&userroom_id); self.db
self.db.roomuserid_joined.remove(&roomuser_id); .userroomid_joinedcount
.remove(&userroom_id);
self.db
.roomuserid_joinedcount
.remove(&roomuser_id);
self.db self.db
.userroomid_invitestate .userroomid_invitestate
@@ -396,8 +404,12 @@ pub(crate) async fn mark_as_invited(
.roomuserid_invitecount .roomuserid_invitecount
.raw_aput::<8, _, _>(&roomuser_id, count.into_unsigned()); .raw_aput::<8, _, _>(&roomuser_id, count.into_unsigned());
self.db.userroomid_joined.remove(&userroom_id); self.db
self.db.roomuserid_joined.remove(&roomuser_id); .userroomid_joinedcount
.remove(&userroom_id);
self.db
.roomuserid_joinedcount
.remove(&roomuser_id);
self.db.userroomid_leftstate.remove(&userroom_id); self.db.userroomid_leftstate.remove(&userroom_id);
self.db.roomuserid_leftcount.remove(&roomuser_id); self.db.roomuserid_leftcount.remove(&roomuser_id);