diff --git a/src/storage/file_storage.rs b/src/storage/file_storage.rs index e29a338e7..bd30f4b1d 100644 --- a/src/storage/file_storage.rs +++ b/src/storage/file_storage.rs @@ -1,13 +1,49 @@ +use std::fs::{File, OpenOptions}; + #[allow(dead_code)] -#[derive(Default)] -pub(crate) struct FileStorage {} +pub(crate) struct FileStorage { + filename: String, + file: File, +} + +impl From<&str> for FileStorage { + fn from(filename: &str) -> Self { + FileStorage::from(filename.to_string()) + } +} + +impl From for FileStorage { + fn from(filename: String) -> Self { + FileStorage { + file: OpenOptions::new() + .write(true) + .create(true) + .read(true) + .open(&filename) + .unwrap(), + filename, + } + } +} #[cfg(test)] mod tests { use super::*; + use crate::test_utilities::test_file::TestFile; + use std::path::Path; + + #[test] + fn create_new_file() { + let test_file = TestFile::from("./file_storage_test01.agdb"); + let _storage = FileStorage::from(test_file.file_name().as_str()); + + assert!(Path::new(test_file.file_name()).exists()); + } #[test] - fn file_storage() { - let _storage = FileStorage::default(); + fn open_existing_file() { + let test_file = TestFile::from("./file_storage_test02.agdb"); + File::create(test_file.file_name()).unwrap(); + let _storage = FileStorage::from(test_file.file_name().clone()); } }