aboutsummaryrefslogtreecommitdiffstats
path: root/crates/turtle/src/command/client/store/purge.rs
blob: a23f1886399b4d78ce61023ceba812d579cdf348 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use clap::Args;
use eyre::Result;

use crate::atuin_client::{
    encryption::load_key, record::sqlite_store::SqliteStore, settings::Settings,
};

#[derive(Args, Debug)]
pub(crate) struct Purge {}

impl Purge {
    pub(crate) async fn run(&self, settings: &Settings, store: SqliteStore) -> Result<()> {
        println!("Purging local records that cannot be decrypted");

        let key = load_key(settings)?;

        match store.purge(&key.into()).await {
            Ok(()) => println!("Local store purge completed OK"),
            Err(e) => println!("Failed to purge local store: {e:?}"),
        }

        Ok(())
    }
}