tuwunel_admin/query/room_timeline/
pdus.rs1use 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}