Skip to content

Commit

Permalink
feat: add automatic history store init (#1831)
Browse files Browse the repository at this point in the history
  • Loading branch information
ellie committed Mar 6, 2024
1 parent be6f653 commit da24f73
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 12 deletions.
6 changes: 4 additions & 2 deletions atuin-client/src/history/store.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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};
Expand Down Expand Up @@ -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}")
Expand All @@ -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");
Expand Down
7 changes: 1 addition & 6 deletions atuin/src/command/client/history.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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
Expand Down
10 changes: 6 additions & 4 deletions atuin/src/command/client/sync.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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?;
Expand Down

0 comments on commit da24f73

Please sign in to comment.