Skip to main content

tuwunel_admin/debug/
delete_forward_extremities.rs

1use 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}