diff options
author | Ellie Huxtable <ellie@elliehuxtable.com> | 2024-03-06 11:55:53 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-06 11:55:53 +0000 |
commit | da24f734e532a5725b759ceee5b331255cb5f424 (patch) | |
tree | 14489121674c27244bf2d82b3d68af372ea072eb | |
parent | be6f6534da5ef52077b6470409547f9a70edcee2 (diff) |
feat: add automatic history store init (#1831)
-rw-r--r-- | atuin-client/src/history/store.rs | 6 | ||||
-rw-r--r-- | atuin/src/command/client/history.rs | 7 | ||||
-rw-r--r-- | atuin/src/command/client/sync.rs | 10 |
3 files changed, 11 insertions, 12 deletions
diff --git a/atuin-client/src/history/store.rs b/atuin-client/src/history/store.rs index 575f5544..fe2b7b92 100644 --- a/atuin-client/src/history/store.rs +++ b/atuin-client/src/history/store.rs @@ -5,7 +5,7 @@ use indicatif::{ProgressBar, ProgressState, ProgressStyle}; use rmp::decode::Bytes; use crate::{ - database::{self, Database}, + database::{current_context, Database}, record::{encryption::PASETO_V4, sqlite_store::SqliteStore, store::Store}, }; use atuin_common::record::{DecryptedData, Host, HostId, Record, RecordId, RecordIdx}; @@ -287,7 +287,7 @@ impl HistoryStore { Ok(ret) } - pub async fn init_store(&self, context: database::Context, db: &impl Database) -> Result<()> { + pub async fn init_store(&self, db: &impl Database) -> Result<()> { let pb = ProgressBar::new_spinner(); pb.set_style( ProgressStyle::with_template("{spinner:.blue} {msg}") @@ -300,6 +300,8 @@ impl HistoryStore { pb.enable_steady_tick(Duration::from_millis(500)); pb.set_message("Fetching history from old database"); + + let context = current_context(); let history = db.list(&[], &context, None, false, true).await?; pb.set_message("Fetching history already in store"); diff --git a/atuin/src/command/client/history.rs b/atuin/src/command/client/history.rs index af90e7bc..e5acc8b1 100644 --- a/atuin/src/command/client/history.rs +++ b/atuin/src/command/client/history.rs @@ -475,11 +475,6 @@ impl Cmd { Ok(()) } - async fn init_store(&self, db: &impl Database, history_store: HistoryStore) -> Result<()> { - let context = current_context(); - history_store.init_store(context, db).await - } - pub async fn run( self, settings: &Settings, @@ -542,7 +537,7 @@ impl Cmd { Ok(()) } - Self::InitStore => self.init_store(db, history_store).await, + Self::InitStore => history_store.init_store(db).await, Self::Prune { dry_run } => { Self::handle_prune(db, settings, store, context, dry_run).await diff --git a/atuin/src/command/client/sync.rs b/atuin/src/command/client/sync.rs index 4934baf4..1fb64a6e 100644 --- a/atuin/src/command/client/sync.rs +++ b/atuin/src/command/client/sync.rs @@ -99,11 +99,13 @@ async fn run( #[allow(clippy::cast_sign_loss)] if history_length as u64 > store_history_length { - println!("History DB is longer than history record store"); - println!("This happens when you used Atuin pre-record-store"); - println!("Run atuin history init-store to correct this"); + println!( + "{history_length} in history index, but {store_history_length} in history store" + ); + println!("Running automatic history store init..."); - println!("\n"); + // Internally we use the global filter mode, so this context is ignored. + history_store.init_store(db).await?; } } else { atuin_client::sync::sync(settings, force, db).await?; |