Skip to main content

tuwunel_admin/query/room_timeline/
pdus.rs

1use futures::TryStreamExt;
2use ruma::OwnedRoomOrAliasId;
3use tuwunel_core::{PduCount, Result, utils::stream::TryTools};
4
5use crate::admin_command;
6
7#[admin_command]
8pub(super) async fn pdus(
9	&self,
10	room_id: OwnedRoomOrAliasId,
11	from: Option<String>,
12	limit: Option<usize>,
13) -> Result {
14	let room_id = self
15		.services
16		.alias
17		.maybe_resolve(&room_id)
18		.await?;
19
20	let from: Option<PduCount> = from.as_deref().map(str::parse).transpose()?;
21
22	let result: Vec<_> = self
23		.services
24		.timeline
25		.pdus_rev(None, &room_id, from)
26		.try_take(limit.unwrap_or(3))
27		.try_collect()
28		.await?;
29
30	write!(self, "{result:#?}").await
31}