Add admin query raw command to clear table.
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
@@ -37,15 +37,6 @@ pub(crate) enum RawCommand {
|
|||||||
base64: bool,
|
base64: bool,
|
||||||
},
|
},
|
||||||
|
|
||||||
/// - Raw database delete (for string keys)
|
|
||||||
Del {
|
|
||||||
/// Map name
|
|
||||||
map: String,
|
|
||||||
|
|
||||||
/// Key
|
|
||||||
key: String,
|
|
||||||
},
|
|
||||||
|
|
||||||
/// - Raw database keys iteration
|
/// - Raw database keys iteration
|
||||||
Keys {
|
Keys {
|
||||||
/// Map name
|
/// Map name
|
||||||
@@ -135,7 +126,26 @@ pub(crate) enum RawCommand {
|
|||||||
prefix: Option<String>,
|
prefix: Option<String>,
|
||||||
},
|
},
|
||||||
|
|
||||||
/// - Compact database
|
/// - Raw database delete (for string keys) DANGER!!!
|
||||||
|
Del {
|
||||||
|
/// Map name
|
||||||
|
map: String,
|
||||||
|
|
||||||
|
/// Key
|
||||||
|
key: String,
|
||||||
|
},
|
||||||
|
|
||||||
|
/// - Clear database table DANGER!!!
|
||||||
|
Clear {
|
||||||
|
/// Map name
|
||||||
|
map: String,
|
||||||
|
|
||||||
|
/// Confirm
|
||||||
|
#[arg(long)]
|
||||||
|
confirm: bool,
|
||||||
|
},
|
||||||
|
|
||||||
|
/// - Compact database DANGER!!!
|
||||||
Compact {
|
Compact {
|
||||||
#[arg(short, long, alias("column"))]
|
#[arg(short, long, alias("column"))]
|
||||||
map: Option<Vec<String>>,
|
map: Option<Vec<String>>,
|
||||||
@@ -425,6 +435,28 @@ pub(super) async fn raw_del(&self, map: String, key: String) -> Result {
|
|||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[admin_command]
|
||||||
|
pub(super) async fn raw_clear(&self, map: String, confirm: bool) -> Result {
|
||||||
|
let map = self.services.db.get(&map)?;
|
||||||
|
|
||||||
|
if !confirm {
|
||||||
|
return Err!("Are you really sure you want to clear all data? Add the --confirm option.");
|
||||||
|
}
|
||||||
|
|
||||||
|
let timer = Instant::now();
|
||||||
|
let cork = self.services.db.cork();
|
||||||
|
map.raw_keys()
|
||||||
|
.ignore_err()
|
||||||
|
.ready_for_each(|key| map.remove(&key))
|
||||||
|
.boxed()
|
||||||
|
.await;
|
||||||
|
|
||||||
|
drop(cork);
|
||||||
|
let query_time = timer.elapsed();
|
||||||
|
self.write_str(&format!("Operation completed in {query_time:?}"))
|
||||||
|
.await
|
||||||
|
}
|
||||||
|
|
||||||
#[admin_command]
|
#[admin_command]
|
||||||
pub(super) async fn raw_get(&self, map: String, key: String, base64: bool) -> Result {
|
pub(super) async fn raw_get(&self, map: String, key: String, base64: bool) -> Result {
|
||||||
let map = self.services.db.get(&map)?;
|
let map = self.services.db.get(&map)?;
|
||||||
|
|||||||
Reference in New Issue
Block a user