Import habits upon creating habitmgr.
This commit is contained in:
parent
2e84cdb3d2
commit
adbff32546
@ -55,23 +55,27 @@ impl HabitMgr
|
|||||||
habits_path.display(), e);
|
habits_path.display(), e);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
Self
|
|
||||||
{
|
|
||||||
habits: Vec::new(),
|
|
||||||
habits_path,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn import_habits(&mut self)
|
/*
|
||||||
{
|
* The list of active habits is necessary for all functions, thus they're
|
||||||
|
* imported here, allowing member functions which only wish to access
|
||||||
|
* information to be constant.
|
||||||
|
*/
|
||||||
let habits_file = OpenOptions::new()
|
let habits_file = OpenOptions::new()
|
||||||
.read(true)
|
.read(true)
|
||||||
.open(&self.habits_path)
|
.open(&habits_path)
|
||||||
.unwrap_or_else(|e| {
|
.unwrap_or_else(|e| {
|
||||||
panic!("Error opening file {}:\n{}", self.habits_path.display(), e);
|
panic!("Error opening file {}:\n{}", habits_path.display(), e);
|
||||||
});
|
});
|
||||||
let habits_reader = BufReader::new(&habits_file);
|
let habits_reader = BufReader::new(&habits_file);
|
||||||
self.habits = serde_json::from_reader(habits_reader).unwrap();
|
|
||||||
|
let habits:Vec<Habit> = serde_json::from_reader(habits_reader).unwrap();
|
||||||
|
|
||||||
|
Self
|
||||||
|
{
|
||||||
|
habits,
|
||||||
|
habits_path,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn export_habits(&self)
|
fn export_habits(&self)
|
||||||
@ -93,7 +97,6 @@ impl HabitMgr
|
|||||||
|
|
||||||
pub fn add(&mut self, name:String, bad:bool, weight:u8, _days:String)
|
pub fn add(&mut self, name:String, bad:bool, weight:u8, _days:String)
|
||||||
{
|
{
|
||||||
self.import_habits();
|
|
||||||
self.habits.push(Habit::new(name.clone(), bad, weight));
|
self.habits.push(Habit::new(name.clone(), bad, weight));
|
||||||
self.export_habits();
|
self.export_habits();
|
||||||
|
|
||||||
@ -102,15 +105,13 @@ impl HabitMgr
|
|||||||
|
|
||||||
pub fn delete(&mut self, id:usize)
|
pub fn delete(&mut self, id:usize)
|
||||||
{
|
{
|
||||||
self.import_habits();
|
|
||||||
let old_habit = self.habits.remove(id);
|
let old_habit = self.habits.remove(id);
|
||||||
self.export_habits();
|
self.export_habits();
|
||||||
println!("Removed habit {}", old_habit.get_name());
|
println!("Removed habit {}", old_habit.get_name());
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn habit_info(&mut self, id:usize)
|
pub fn habit_info(&self, id:usize)
|
||||||
{
|
{
|
||||||
self.import_habits();
|
|
||||||
let habit = &self.habits[id];
|
let habit = &self.habits[id];
|
||||||
println!("Name: {}", habit.get_name());
|
println!("Name: {}", habit.get_name());
|
||||||
println!("ID: {}", id);
|
println!("ID: {}", id);
|
||||||
@ -125,7 +126,6 @@ impl HabitMgr
|
|||||||
weight:Option<u8>,
|
weight:Option<u8>,
|
||||||
_days:Option<String>)
|
_days:Option<String>)
|
||||||
{
|
{
|
||||||
self.import_habits();
|
|
||||||
if name.is_some()
|
if name.is_some()
|
||||||
{
|
{
|
||||||
self.habits[id].set_name(name.unwrap());
|
self.habits[id].set_name(name.unwrap());
|
||||||
@ -142,9 +142,8 @@ impl HabitMgr
|
|||||||
self.export_habits();
|
self.export_habits();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn list(&mut self, _all:bool)
|
pub fn list(&self, _all:bool)
|
||||||
{
|
{
|
||||||
self.import_habits();
|
|
||||||
if self.habits.is_empty()
|
if self.habits.is_empty()
|
||||||
{
|
{
|
||||||
println!("There are no habits. Add one!");
|
println!("There are no habits. Add one!");
|
||||||
|
Loading…
Reference in New Issue
Block a user