From 5369304516c3337d8d1bb0751048362c02497f5f Mon Sep 17 00:00:00 2001 From: CodeSteak Date: Sun, 5 May 2019 19:54:26 +0200 Subject: [PATCH] fix dir creation bugs --- .../src/persistency/metadata_file.rs | 4 ++++ server/texture-sync-server/src/persistency/mod.rs | 11 ++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/server/texture-sync-server/src/persistency/metadata_file.rs b/server/texture-sync-server/src/persistency/metadata_file.rs index 81dc413..01231cf 100644 --- a/server/texture-sync-server/src/persistency/metadata_file.rs +++ b/server/texture-sync-server/src/persistency/metadata_file.rs @@ -36,6 +36,10 @@ impl MetadataFile { let mut path_tmp = path.to_path_buf(); assert!(path_tmp.set_extension("js.tmp")); + let mut base = path.to_path_buf(); + base.pop(); + fs::create_dir_all(&base)?; + let mut file = fs::File::create(&path_tmp)?; serde_json::to_writer(&mut file, &self)?; file.flush()?; diff --git a/server/texture-sync-server/src/persistency/mod.rs b/server/texture-sync-server/src/persistency/mod.rs index 169201d..1cada6d 100644 --- a/server/texture-sync-server/src/persistency/mod.rs +++ b/server/texture-sync-server/src/persistency/mod.rs @@ -43,9 +43,14 @@ pub struct DataStore { } impl DataStore { - fn texture_file_path(&self, sha: &Sha256) -> PathBuf { + fn texture_base_path(&self) -> PathBuf { let mut path = self.base_dir.clone(); path.push("textures"); + path + } + + fn texture_file_path(&self, sha: &Sha256) -> PathBuf { + let mut path = self.texture_base_path(); path.push(sha.as_hex_string()); path } @@ -156,9 +161,9 @@ impl DataStore { use std::io::Write; let hash = crate::model::Sha256::from_data(data); - let file_path = self.texture_file_path(&hash); - fs::create_dir_all(&file_path)?; + fs::create_dir_all(&self.texture_base_path())?; + let file_path = self.texture_file_path(&hash); let mut file = fs::File::create(&file_path)?;