From 32dd60bca02cf2cfccc8d4309691df9f2f84398c Mon Sep 17 00:00:00 2001 From: troido Date: Tue, 18 Feb 2020 02:27:21 +0100 Subject: refactoring: roomid is now a type, not string anymore --- src/persistence.rs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src/persistence.rs') diff --git a/src/persistence.rs b/src/persistence.rs index 7c15ec0..07ff89b 100644 --- a/src/persistence.rs +++ b/src/persistence.rs @@ -6,6 +6,7 @@ use serde_json; use serde_json::Value; use crate::{ PlayerId, + RoomId, savestate::SaveState, playerstate::PlayerState, util::Result, @@ -14,11 +15,11 @@ use crate::{ pub trait PersistentStorage { - fn load_room(&self, name: String) -> Result; + fn load_room(&self, id: RoomId) -> Result; fn load_player(&self, id: PlayerId) -> Result; - fn save_room(&self, name: String, state: SaveState) -> Result<()>; + fn save_room(&self, id: RoomId, state: SaveState) -> Result<()>; fn save_player(&self, id: PlayerId, sate: PlayerState) -> Result<()>; @@ -57,10 +58,10 @@ impl FileStorage { impl PersistentStorage for FileStorage { - fn load_room(&self, name: String) -> Result { + fn load_room(&self, id: RoomId) -> Result { let mut path = self.directory.clone(); path.push("rooms"); - let fname = name + ".save.json"; + let fname = id.to_string() + ".save.json"; path.push(fname); let text = fs::read_to_string(path)?; let json: Value = serde_json::from_str(&text)?; @@ -70,18 +71,18 @@ impl PersistentStorage for FileStorage { fn load_player(&self, id: PlayerId) -> Result { let mut path = self.directory.clone(); path.push("players"); - let fname = id.name + ".save.json"; + let fname = id.to_string() + ".save.json"; path.push(fname); let text = fs::read_to_string(path)?; let json: Value = serde_json::from_str(&text)?; PlayerState::from_json(&json).ok_or(aerr!("not a valid save state")) } - fn save_room(&self, name: String, state: SaveState) -> Result<()> { + fn save_room(&self, id: RoomId, state: SaveState) -> Result<()> { let mut path = self.directory.clone(); path.push("rooms"); fs::create_dir_all(&path)?; - let fname = name + ".save.json"; + let fname = id.to_string() + ".save.json"; path.push(fname); let text = state.to_json().to_string(); // todo: write to a temp file first @@ -93,7 +94,7 @@ impl PersistentStorage for FileStorage { let mut path = self.directory.clone(); path.push("players"); fs::create_dir_all(&path)?; - let fname = id.name + ".save.json"; + let fname = id.to_string() + ".save.json"; path.push(fname); let text = state.to_json().to_string(); // todo: write to a temp file first -- cgit