Rename user rooms iterations which have state vectors as values.

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2025-10-04 06:08:35 +00:00
parent aef38b1178
commit ee777bc287
5 changed files with 31 additions and 31 deletions

View File

@@ -282,7 +282,7 @@ pub(super) async fn process(subcommand: RoomStateCacheCommand, context: &Context
let timer = tokio::time::Instant::now();
let results: Vec<_> = services
.state_cache
.rooms_invited(&user_id)
.rooms_invited_state(&user_id)
.collect()
.await;
let query_time = timer.elapsed();
@@ -297,7 +297,7 @@ pub(super) async fn process(subcommand: RoomStateCacheCommand, context: &Context
let timer = tokio::time::Instant::now();
let results: Vec<_> = services
.state_cache
.rooms_left(&user_id)
.rooms_left_state(&user_id)
.collect()
.await;
let query_time = timer.elapsed();

View File

@@ -279,7 +279,7 @@ async fn build_sync_events(
let left_rooms = services
.state_cache
.rooms_left(sender_user)
.rooms_left_state(sender_user)
.ready_filter(|(room_id, _)| filter.room.matches(room_id))
.broad_filter_map(|(room_id, _)| {
handle_left_room(
@@ -299,7 +299,7 @@ async fn build_sync_events(
let invited_rooms = services
.state_cache
.rooms_invited(sender_user)
.rooms_invited_state(sender_user)
.ready_filter(|(room_id, _)| filter.room.matches(room_id))
.fold_default(async |mut invited_rooms: BTreeMap<_, _>, (room_id, invite_state)| {
let invite_count = services
@@ -323,7 +323,7 @@ async fn build_sync_events(
let knocked_rooms = services
.state_cache
.rooms_knocked(sender_user)
.rooms_knocked_state(sender_user)
.ready_filter(|(room_id, _)| filter.room.matches(room_id))
.fold_default(async |mut knocked_rooms: BTreeMap<_, _>, (room_id, knock_state)| {
let knock_count = services

View File

@@ -119,13 +119,13 @@ pub(crate) async fn sync_events_v5_route(
let all_invited_rooms = services
.state_cache
.rooms_invited(sender_user)
.rooms_invited_state(sender_user)
.map(|r| r.0)
.collect::<Vec<OwnedRoomId>>();
let all_knocked_rooms = services
.state_cache
.rooms_knocked(sender_user)
.rooms_knocked_state(sender_user)
.map(|r| r.0)
.collect::<Vec<OwnedRoomId>>();

View File

@@ -123,13 +123,13 @@ impl Service {
let rooms_invited = self
.services
.state_cache
.rooms_invited(user_id)
.rooms_invited_state(user_id)
.map(|(r, _)| r);
let rooms_knocked = self
.services
.state_cache
.rooms_knocked(user_id)
.rooms_knocked_state(user_id)
.map(|(r, _)| r);
let all_rooms: Vec<_> = rooms_joined

View File

@@ -399,7 +399,7 @@ pub fn rooms_joined<'a>(
/// Returns an iterator over all rooms a user was invited to.
#[implement(Service)]
#[tracing::instrument(skip(self), level = "debug")]
pub fn rooms_invited<'a>(
pub fn rooms_invited_state<'a>(
&'a self,
user_id: &'a UserId,
) -> impl Stream<Item = StrippedStateEventItem> + Send + 'a {
@@ -419,7 +419,7 @@ pub fn rooms_invited<'a>(
/// Returns an iterator over all rooms a user is currently knocking.
#[implement(Service)]
#[tracing::instrument(skip(self), level = "trace")]
pub fn rooms_knocked<'a>(
pub fn rooms_knocked_state<'a>(
&'a self,
user_id: &'a UserId,
) -> impl Stream<Item = StrippedStateEventItem> + Send + 'a {
@@ -436,6 +436,26 @@ pub fn rooms_knocked<'a>(
.ignore_err()
}
/// Returns an iterator over all rooms a user left.
#[implement(Service)]
#[tracing::instrument(skip(self), level = "debug")]
pub fn rooms_left_state<'a>(
&'a self,
user_id: &'a UserId,
) -> impl Stream<Item = SyncStateEventItem> + Send + 'a {
type KeyVal<'a> = (Key<'a>, Raw<Vec<Raw<AnySyncStateEvent>>>);
type Key<'a> = (&'a UserId, &'a RoomId);
let prefix = (user_id, Interfix);
self.db
.userroomid_leftstate
.stream_prefix(&prefix)
.ignore_err()
.map(|((_, room_id), state): KeyVal<'_>| (room_id.to_owned(), state))
.map(|(room_id, state)| Ok((room_id, state.deserialize_as_unchecked()?)))
.ignore_err()
}
#[implement(Service)]
#[tracing::instrument(skip(self), level = "trace")]
pub async fn invite_state(
@@ -490,26 +510,6 @@ pub async fn left_state(
})
}
/// Returns an iterator over all rooms a user left.
#[implement(Service)]
#[tracing::instrument(skip(self), level = "debug")]
pub fn rooms_left<'a>(
&'a self,
user_id: &'a UserId,
) -> impl Stream<Item = SyncStateEventItem> + Send + 'a {
type KeyVal<'a> = (Key<'a>, Raw<Vec<Raw<AnySyncStateEvent>>>);
type Key<'a> = (&'a UserId, &'a RoomId);
let prefix = (user_id, Interfix);
self.db
.userroomid_leftstate
.stream_prefix(&prefix)
.ignore_err()
.map(|((_, room_id), state): KeyVal<'_>| (room_id.to_owned(), state))
.map(|(room_id, state)| Ok((room_id, state.deserialize_as_unchecked()?)))
.ignore_err()
}
#[implement(Service)]
#[tracing::instrument(skip(self), level = "trace")]
pub async fn user_membership(