diff --git a/rslib/src/dbcheck.rs b/rslib/src/dbcheck.rs index d7c683e58..ad0cf81ce 100644 --- a/rslib/src/dbcheck.rs +++ b/rslib/src/dbcheck.rs @@ -144,7 +144,7 @@ impl Collection { self.update_next_new_position()?; debug!("invalid ids"); - self.maybe_fix_invalid_ids(&mut out)?; + out.invalid_ids = self.maybe_fix_invalid_ids()?; debug!("db check finished: {:#?}", out); @@ -416,15 +416,15 @@ impl Collection { self.set_next_card_position(pos) } - fn maybe_fix_invalid_ids(&mut self, out: &mut CheckDatabaseOutput) -> Result<()> { + pub(crate) fn maybe_fix_invalid_ids(&mut self) -> Result { let now = TimestampMillis::now(); let tomorrow = now.adding_secs(24 * 60 * 60).0; - out.invalid_ids = self.storage.invalid_ids(tomorrow)?; - if out.invalid_ids > 0 { + let num_invalid_ids = self.storage.invalid_ids(tomorrow)?; + if num_invalid_ids > 0 { self.storage.fix_invalid_ids(tomorrow, now.0)?; self.set_schema_modified()?; } - Ok(()) + Ok(num_invalid_ids) } } diff --git a/rslib/src/import_export/mod.rs b/rslib/src/import_export/mod.rs index 8fbc2bcd7..94e3c4768 100644 --- a/rslib/src/import_export/mod.rs +++ b/rslib/src/import_export/mod.rs @@ -137,7 +137,6 @@ pub enum ImportError { TooNew, MediaImportFailed { info: String }, NoFieldColumn, - InvalidId, } impl ImportError { @@ -149,7 +148,6 @@ impl ImportError { tr.importing_failed_to_import_media_file(info) } ImportError::NoFieldColumn => tr.importing_file_must_contain_field_column(), - ImportError::InvalidId => tr.errors_invalid_ids(), } .into() } diff --git a/rslib/src/import_export/package/apkg/import/mod.rs b/rslib/src/import_export/package/apkg/import/mod.rs index 3430bf653..18ca39d82 100644 --- a/rslib/src/import_export/package/apkg/import/mod.rs +++ b/rslib/src/import_export/package/apkg/import/mod.rs @@ -20,7 +20,6 @@ use crate::error::FileIoSnafu; use crate::error::FileOp; use crate::import_export::gather::ExchangeData; use crate::import_export::package::Meta; -use crate::import_export::ImportError; use crate::import_export::ImportProgress; use crate::import_export::IncrementableProgress; use crate::import_export::NoteLog; @@ -107,15 +106,12 @@ impl ExchangeData { ) -> Result { let tempfile = collection_to_tempfile(meta, archive)?; let mut col = CollectionBuilder::new(tempfile.path()).build()?; + col.maybe_fix_invalid_ids()?; col.maybe_upgrade_scheduler()?; progress.call(ImportProgress::Gathering)?; let mut data = ExchangeData::default(); - data.gather_data(&mut col, search, with_scheduling) - .map_err(|error| match error { - AnkiError::InvalidId => ImportError::InvalidId.into(), - error => error, - })?; + data.gather_data(&mut col, search, with_scheduling)?; Ok(data) }