aboutsummaryrefslogtreecommitdiffstats
path: root/atuin-client/src/database.rs
diff options
context:
space:
mode:
Diffstat (limited to 'atuin-client/src/database.rs')
-rw-r--r--atuin-client/src/database.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/atuin-client/src/database.rs b/atuin-client/src/database.rs
index f7c063ce..22bd5886 100644
--- a/atuin-client/src/database.rs
+++ b/atuin-client/src/database.rs
@@ -6,6 +6,7 @@ use chrono::{prelude::*, Utc};
use fs_err as fs;
use itertools::Itertools;
use lazy_static::lazy_static;
+use rand::{distributions::Alphanumeric, Rng};
use regex::Regex;
use sql_builder::{esc, quote, SqlBuilder, SqlName};
use sqlx::{
@@ -460,6 +461,8 @@ impl Database for Sqlite {
.map(|after| sql.and_where_gt("timestamp", quote(after.timestamp_nanos())))
});
+ sql.and_where_is_null("deleted_at");
+
let query = sql.sql().expect("bug in search query. please report");
let res = sqlx::query(&query)
@@ -519,7 +522,11 @@ impl Database for Sqlite {
// but the time that the system marks it as deleted
async fn delete(&self, mut h: History) -> Result<()> {
let now = chrono::Utc::now();
- h.command = String::from(""); // blank it
+ h.command = rand::thread_rng()
+ .sample_iter(&Alphanumeric)
+ .take(32)
+ .map(char::from)
+ .collect(); // overwrite with random string
h.deleted_at = Some(now); // delete it
self.update(&h).await?; // save it