diff --git a/src/repository.rs b/src/repository.rs index 773541a..75c36dc 100644 --- a/src/repository.rs +++ b/src/repository.rs @@ -24,6 +24,7 @@ pub struct RepositoryItem<'a> { version: ItemVersion<'a>, relative_path: Box, absolute_path: Box, + original_source_path: Box, } pub struct RepositoryIterator<'a> { @@ -140,19 +141,17 @@ impl<'a> Repository<'a> { Ok(()) } - pub fn item(&self, path: &Path) -> Option<&RepositoryItem> { - let relative_path = { - if path.is_relative() { - Some(path) - } else { - path.strip_prefix(self.path).ok() - } - }; - if let Some(relative_path) = relative_path { - self.index.items.iter().find(|i| *i.relative_path == *relative_path) - } else { - None + pub fn item_by_source_path(&self, path: &Path) -> Result, BakareError> { + println!( + "trying to find {} in a repo [{}] of {} items", + path.display(), + self.path.display(), + self.index.items.len() + ); + if !path.is_absolute() { + return Err(BakareError::RepositoryPathNotAbsolute); } + self.index.items.iter().find(|i| *i.original_source_path == *path) } pub fn newest_version_for(&self, item: RepositoryItem) -> ItemVersion { diff --git a/tests/system_tests.rs b/tests/system_tests.rs index 840a3be..0dce9d8 100644 --- a/tests/system_tests.rs +++ b/tests/system_tests.rs @@ -42,8 +42,8 @@ fn restore_older_version_of_file() -> Result<(), BakareError> { backup_engine.backup()?; } - let backup_repository = Repository::open(repository_path.as_path())?; - let file_id = backup_repository.item(&file_path); + let reading_repository = Repository::open(repository_path.as_path())?; + let file_id = reading_repository.item_by_source_path(&file_path)?; assert!(file_id.is_some()); let file_id = file_id.unwrap(); let old_version = file_id.version();