tuwunel_admin/debug/
delete_forward_extremities.rs1use std::borrow::Cow;
2
3use ruma::OwnedRoomOrAliasId;
4use tuwunel_core::Result;
5
6use crate::admin_command;
7
8#[admin_command]
9#[tracing::instrument(level = "debug", skip(self))]
10pub(super) async fn delete_forward_extremities(&self, room: OwnedRoomOrAliasId) -> Result {
11 let room_id = self.services.alias.maybe_resolve(&room).await?;
12
13 let state_lock = self.services.state.mutex.lock(&room_id).await;
14
15 let deleted = self
16 .services
17 .state
18 .collapse_forward_extremities(&room_id, &state_lock)
19 .await;
20
21 let out: Cow<'_, str> = match deleted {
22 | 0 => "The room has one or no forward extremities; nothing to prune.".into(),
23 | 1 => "Pruned 1 forward extremity, leaving one.".into(),
24 | _ => format!("Pruned {deleted} forward extremities, leaving one.").into(),
25 };
26
27 self.write_str(&out).await
28}