summaryrefslogtreecommitdiff
path: root/src/persistence.rs
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-02-18 02:27:21 +0100
committertroido <troido@protonmail.com>2020-02-18 02:27:21 +0100
commit32dd60bca02cf2cfccc8d4309691df9f2f84398c (patch)
treee6d67140f3f0ca2272f796775a9dc65e5b25484f /src/persistence.rs
parentc71ecb48fa4368035a852e2d06869a21382a6876 (diff)
refactoring: roomid is now a type, not string anymore
Diffstat (limited to 'src/persistence.rs')
-rw-r--r--src/persistence.rs17
1 files changed, 9 insertions, 8 deletions
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<SaveState>;
+ fn load_room(&self, id: RoomId) -> Result<SaveState>;
fn load_player(&self, id: PlayerId) -> Result<PlayerState>;
- 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<SaveState> {
+ fn load_room(&self, id: RoomId) -> Result<SaveState> {
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<PlayerState> {
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