diff --git a/src/admin/query/raw.rs b/src/admin/query/raw.rs index ac5e8976..5a6006ec 100644 --- a/src/admin/query/raw.rs +++ b/src/admin/query/raw.rs @@ -33,6 +33,15 @@ pub(crate) enum RawCommand { key: String, }, + /// - Raw database delete (for string keys) + RawDel { + /// Map name + map: String, + + /// Key + key: String, + }, + /// - Raw database keys iteration RawKeys { /// Map name @@ -534,6 +543,18 @@ pub(super) async fn raw_iter_from( ))) } +#[admin_command] +pub(super) async fn raw_del(&self, map: String, key: String) -> Result { + let map = self.services.db.get(&map)?; + let timer = Instant::now(); + map.remove(&key); + let query_time = timer.elapsed(); + + Ok(RoomMessageEventContent::notice_markdown(format!( + "Operation completed in {query_time:?}" + ))) +} + #[admin_command] pub(super) async fn raw_get(&self, map: String, key: String) -> Result { let map = self.services.db.get(&map)?;