From 215b416de8c71686311edca29f71cdf4223fc8e5 Mon Sep 17 00:00:00 2001 From: michaelvlach Date: Sat, 20 Aug 2022 21:49:35 +0200 Subject: [PATCH 1/4] Update file_storage.rs --- src/storage/file_storage.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/storage/file_storage.rs b/src/storage/file_storage.rs index e29a338e7..8444dca7f 100644 --- a/src/storage/file_storage.rs +++ b/src/storage/file_storage.rs @@ -10,4 +10,9 @@ mod tests { fn file_storage() { let _storage = FileStorage::default(); } + + #[test] + fn create_new_file() { + let filename = "./file_storage_test.agdb"; + } } From 977185c13f3aeca52403a10d58de27fa41aa27dc Mon Sep 17 00:00:00 2001 From: michaelvlach Date: Sat, 20 Aug 2022 23:24:37 +0200 Subject: [PATCH 2/4] Update file_storage.rs --- src/storage/file_storage.rs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/storage/file_storage.rs b/src/storage/file_storage.rs index 8444dca7f..3397f9df4 100644 --- a/src/storage/file_storage.rs +++ b/src/storage/file_storage.rs @@ -1,10 +1,25 @@ #[allow(dead_code)] #[derive(Default)] -pub(crate) struct FileStorage {} +pub(crate) struct FileStorage { + filename: String, +} + +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 { filename } + } +} #[cfg(test)] mod tests { use super::*; + use crate::test_utilities::test_file::TestFile; #[test] fn file_storage() { @@ -13,6 +28,7 @@ mod tests { #[test] fn create_new_file() { - let filename = "./file_storage_test.agdb"; + let test_file = TestFile::from("./file_storage_test.agdb"); + let _storage = FileStorage::from(test_file.filename); } } From 0f4ec21e8192925c15dbe63cce6f3b35a99ecc60 Mon Sep 17 00:00:00 2001 From: michaelvlach Date: Sat, 20 Aug 2022 23:58:33 +0200 Subject: [PATCH 3/4] Update file_storage.rs --- src/storage/file_storage.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/storage/file_storage.rs b/src/storage/file_storage.rs index 3397f9df4..9d70e645e 100644 --- a/src/storage/file_storage.rs +++ b/src/storage/file_storage.rs @@ -29,6 +29,6 @@ mod tests { #[test] fn create_new_file() { let test_file = TestFile::from("./file_storage_test.agdb"); - let _storage = FileStorage::from(test_file.filename); + let _storage = FileStorage::from(test_file.file_name().clone()); } } From 8175700c0e09efe7ac7d7a4ef618a03af006c1da Mon Sep 17 00:00:00 2001 From: michaelvlach Date: Sun, 21 Aug 2022 00:12:42 +0200 Subject: [PATCH 4/4] Update file_storage.rs --- src/storage/file_storage.rs | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/storage/file_storage.rs b/src/storage/file_storage.rs index 9d70e645e..bd30f4b1d 100644 --- a/src/storage/file_storage.rs +++ b/src/storage/file_storage.rs @@ -1,7 +1,9 @@ +use std::fs::{File, OpenOptions}; + #[allow(dead_code)] -#[derive(Default)] pub(crate) struct FileStorage { filename: String, + file: File, } impl From<&str> for FileStorage { @@ -12,7 +14,15 @@ impl From<&str> for FileStorage { impl From for FileStorage { fn from(filename: String) -> Self { - FileStorage { filename } + FileStorage { + file: OpenOptions::new() + .write(true) + .create(true) + .read(true) + .open(&filename) + .unwrap(), + filename, + } } } @@ -20,15 +30,20 @@ impl From for FileStorage { mod tests { use super::*; use crate::test_utilities::test_file::TestFile; + use std::path::Path; #[test] - fn file_storage() { - let _storage = FileStorage::default(); + 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 create_new_file() { - let test_file = TestFile::from("./file_storage_test.agdb"); + 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()); } }