Rename user rooms iterations which have state vectors as values.
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
@@ -282,7 +282,7 @@ pub(super) async fn process(subcommand: RoomStateCacheCommand, context: &Context
|
|||||||
let timer = tokio::time::Instant::now();
|
let timer = tokio::time::Instant::now();
|
||||||
let results: Vec<_> = services
|
let results: Vec<_> = services
|
||||||
.state_cache
|
.state_cache
|
||||||
.rooms_invited(&user_id)
|
.rooms_invited_state(&user_id)
|
||||||
.collect()
|
.collect()
|
||||||
.await;
|
.await;
|
||||||
let query_time = timer.elapsed();
|
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 timer = tokio::time::Instant::now();
|
||||||
let results: Vec<_> = services
|
let results: Vec<_> = services
|
||||||
.state_cache
|
.state_cache
|
||||||
.rooms_left(&user_id)
|
.rooms_left_state(&user_id)
|
||||||
.collect()
|
.collect()
|
||||||
.await;
|
.await;
|
||||||
let query_time = timer.elapsed();
|
let query_time = timer.elapsed();
|
||||||
|
|||||||
@@ -279,7 +279,7 @@ async fn build_sync_events(
|
|||||||
|
|
||||||
let left_rooms = services
|
let left_rooms = services
|
||||||
.state_cache
|
.state_cache
|
||||||
.rooms_left(sender_user)
|
.rooms_left_state(sender_user)
|
||||||
.ready_filter(|(room_id, _)| filter.room.matches(room_id))
|
.ready_filter(|(room_id, _)| filter.room.matches(room_id))
|
||||||
.broad_filter_map(|(room_id, _)| {
|
.broad_filter_map(|(room_id, _)| {
|
||||||
handle_left_room(
|
handle_left_room(
|
||||||
@@ -299,7 +299,7 @@ async fn build_sync_events(
|
|||||||
|
|
||||||
let invited_rooms = services
|
let invited_rooms = services
|
||||||
.state_cache
|
.state_cache
|
||||||
.rooms_invited(sender_user)
|
.rooms_invited_state(sender_user)
|
||||||
.ready_filter(|(room_id, _)| filter.room.matches(room_id))
|
.ready_filter(|(room_id, _)| filter.room.matches(room_id))
|
||||||
.fold_default(async |mut invited_rooms: BTreeMap<_, _>, (room_id, invite_state)| {
|
.fold_default(async |mut invited_rooms: BTreeMap<_, _>, (room_id, invite_state)| {
|
||||||
let invite_count = services
|
let invite_count = services
|
||||||
@@ -323,7 +323,7 @@ async fn build_sync_events(
|
|||||||
|
|
||||||
let knocked_rooms = services
|
let knocked_rooms = services
|
||||||
.state_cache
|
.state_cache
|
||||||
.rooms_knocked(sender_user)
|
.rooms_knocked_state(sender_user)
|
||||||
.ready_filter(|(room_id, _)| filter.room.matches(room_id))
|
.ready_filter(|(room_id, _)| filter.room.matches(room_id))
|
||||||
.fold_default(async |mut knocked_rooms: BTreeMap<_, _>, (room_id, knock_state)| {
|
.fold_default(async |mut knocked_rooms: BTreeMap<_, _>, (room_id, knock_state)| {
|
||||||
let knock_count = services
|
let knock_count = services
|
||||||
|
|||||||
@@ -119,13 +119,13 @@ pub(crate) async fn sync_events_v5_route(
|
|||||||
|
|
||||||
let all_invited_rooms = services
|
let all_invited_rooms = services
|
||||||
.state_cache
|
.state_cache
|
||||||
.rooms_invited(sender_user)
|
.rooms_invited_state(sender_user)
|
||||||
.map(|r| r.0)
|
.map(|r| r.0)
|
||||||
.collect::<Vec<OwnedRoomId>>();
|
.collect::<Vec<OwnedRoomId>>();
|
||||||
|
|
||||||
let all_knocked_rooms = services
|
let all_knocked_rooms = services
|
||||||
.state_cache
|
.state_cache
|
||||||
.rooms_knocked(sender_user)
|
.rooms_knocked_state(sender_user)
|
||||||
.map(|r| r.0)
|
.map(|r| r.0)
|
||||||
.collect::<Vec<OwnedRoomId>>();
|
.collect::<Vec<OwnedRoomId>>();
|
||||||
|
|
||||||
|
|||||||
@@ -123,13 +123,13 @@ impl Service {
|
|||||||
let rooms_invited = self
|
let rooms_invited = self
|
||||||
.services
|
.services
|
||||||
.state_cache
|
.state_cache
|
||||||
.rooms_invited(user_id)
|
.rooms_invited_state(user_id)
|
||||||
.map(|(r, _)| r);
|
.map(|(r, _)| r);
|
||||||
|
|
||||||
let rooms_knocked = self
|
let rooms_knocked = self
|
||||||
.services
|
.services
|
||||||
.state_cache
|
.state_cache
|
||||||
.rooms_knocked(user_id)
|
.rooms_knocked_state(user_id)
|
||||||
.map(|(r, _)| r);
|
.map(|(r, _)| r);
|
||||||
|
|
||||||
let all_rooms: Vec<_> = rooms_joined
|
let all_rooms: Vec<_> = rooms_joined
|
||||||
|
|||||||
@@ -399,7 +399,7 @@ pub fn rooms_joined<'a>(
|
|||||||
/// Returns an iterator over all rooms a user was invited to.
|
/// Returns an iterator over all rooms a user was invited to.
|
||||||
#[implement(Service)]
|
#[implement(Service)]
|
||||||
#[tracing::instrument(skip(self), level = "debug")]
|
#[tracing::instrument(skip(self), level = "debug")]
|
||||||
pub fn rooms_invited<'a>(
|
pub fn rooms_invited_state<'a>(
|
||||||
&'a self,
|
&'a self,
|
||||||
user_id: &'a UserId,
|
user_id: &'a UserId,
|
||||||
) -> impl Stream<Item = StrippedStateEventItem> + Send + 'a {
|
) -> 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.
|
/// Returns an iterator over all rooms a user is currently knocking.
|
||||||
#[implement(Service)]
|
#[implement(Service)]
|
||||||
#[tracing::instrument(skip(self), level = "trace")]
|
#[tracing::instrument(skip(self), level = "trace")]
|
||||||
pub fn rooms_knocked<'a>(
|
pub fn rooms_knocked_state<'a>(
|
||||||
&'a self,
|
&'a self,
|
||||||
user_id: &'a UserId,
|
user_id: &'a UserId,
|
||||||
) -> impl Stream<Item = StrippedStateEventItem> + Send + 'a {
|
) -> impl Stream<Item = StrippedStateEventItem> + Send + 'a {
|
||||||
@@ -436,6 +436,26 @@ pub fn rooms_knocked<'a>(
|
|||||||
.ignore_err()
|
.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)]
|
#[implement(Service)]
|
||||||
#[tracing::instrument(skip(self), level = "trace")]
|
#[tracing::instrument(skip(self), level = "trace")]
|
||||||
pub async fn invite_state(
|
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)]
|
#[implement(Service)]
|
||||||
#[tracing::instrument(skip(self), level = "trace")]
|
#[tracing::instrument(skip(self), level = "trace")]
|
||||||
pub async fn user_membership(
|
pub async fn user_membership(
|
||||||
|
|||||||
Reference in New Issue
Block a user