|
@@ -12,17 +12,12 @@ use crate::{
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
|
|
pub struct MonthTasks {
|
|
pub struct MonthTasks {
|
|
|
created_at: Timestamp,
|
|
created_at: Timestamp,
|
|
|
- dataset_path: PathBuf,
|
|
|
|
|
task_tks: Vec<String>,
|
|
task_tks: Vec<String>,
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
impl MonthTasks {
|
|
impl MonthTasks {
|
|
|
- pub fn new(task_tks: &[String], dataset_path: &Path) -> Self {
|
|
|
|
|
- Self {
|
|
|
|
|
- created_at: get_current_time(),
|
|
|
|
|
- dataset_path: dataset_path.to_path_buf(),
|
|
|
|
|
- task_tks: task_tks.to_owned(),
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ pub fn new(task_tks: &[String]) -> Self {
|
|
|
|
|
+ Self { created_at: get_current_time(), task_tks: task_tks.to_owned() }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
pub fn add(&mut self, ref_id: &str) {
|
|
pub fn add(&mut self, ref_id: &str) {
|
|
@@ -31,11 +26,11 @@ impl MonthTasks {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- pub fn objects(&self) -> TaudResult<Vec<TaskInfo>> {
|
|
|
|
|
|
|
+ pub fn objects(&self, dataset_path: &Path) -> TaudResult<Vec<TaskInfo>> {
|
|
|
let mut tks: Vec<TaskInfo> = vec![];
|
|
let mut tks: Vec<TaskInfo> = vec![];
|
|
|
|
|
|
|
|
for ref_id in self.task_tks.iter() {
|
|
for ref_id in self.task_tks.iter() {
|
|
|
- tks.push(TaskInfo::load(ref_id, &self.dataset_path)?);
|
|
|
|
|
|
|
+ tks.push(TaskInfo::load(ref_id, dataset_path)?);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Ok(tks)
|
|
Ok(tks)
|
|
@@ -47,10 +42,6 @@ impl MonthTasks {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- pub fn set_dataset_path(&mut self, dataset_path: &Path) {
|
|
|
|
|
- self.dataset_path = dataset_path.to_path_buf();
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
pub fn set_date(&mut self, date: &Timestamp) {
|
|
pub fn set_date(&mut self, date: &Timestamp) {
|
|
|
self.created_at = date.clone();
|
|
self.created_at = date.clone();
|
|
|
}
|
|
}
|
|
@@ -59,21 +50,18 @@ impl MonthTasks {
|
|
|
dataset_path.join("month").join(Utc.timestamp(date.0, 0).format("%m%y").to_string())
|
|
dataset_path.join("month").join(Utc.timestamp(date.0, 0).format("%m%y").to_string())
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- pub fn save(&self) -> TaudResult<()> {
|
|
|
|
|
- crate::util::save::<Self>(&Self::get_path(&self.created_at, &self.dataset_path), self)
|
|
|
|
|
|
|
+ pub fn save(&self, dataset_path: &Path) -> TaudResult<()> {
|
|
|
|
|
+ crate::util::save::<Self>(&Self::get_path(&self.created_at, dataset_path), self)
|
|
|
.map_err(TaudError::Darkfi)
|
|
.map_err(TaudError::Darkfi)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
pub fn load_or_create(date: &Timestamp, dataset_path: &Path) -> TaudResult<Self> {
|
|
pub fn load_or_create(date: &Timestamp, dataset_path: &Path) -> TaudResult<Self> {
|
|
|
match crate::util::load::<Self>(&Self::get_path(date, dataset_path)) {
|
|
match crate::util::load::<Self>(&Self::get_path(date, dataset_path)) {
|
|
|
- Ok(mut mt) => {
|
|
|
|
|
- mt.set_dataset_path(dataset_path);
|
|
|
|
|
- Ok(mt)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ Ok(mt) => Ok(mt),
|
|
|
Err(_) => {
|
|
Err(_) => {
|
|
|
- let mut mt = Self::new(&[], dataset_path);
|
|
|
|
|
|
|
+ let mut mt = Self::new(&[]);
|
|
|
mt.set_date(date);
|
|
mt.set_date(date);
|
|
|
- mt.save()?;
|
|
|
|
|
|
|
+ mt.save(dataset_path)?;
|
|
|
Ok(mt)
|
|
Ok(mt)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -81,7 +69,7 @@ impl MonthTasks {
|
|
|
|
|
|
|
|
pub fn load_current_open_tasks(dataset_path: &Path) -> TaudResult<Vec<TaskInfo>> {
|
|
pub fn load_current_open_tasks(dataset_path: &Path) -> TaudResult<Vec<TaskInfo>> {
|
|
|
let mt = Self::load_or_create(&get_current_time(), dataset_path)?;
|
|
let mt = Self::load_or_create(&get_current_time(), dataset_path)?;
|
|
|
- Ok(mt.objects()?.into_iter().filter(|t| t.get_state() != "stop").collect())
|
|
|
|
|
|
|
+ Ok(mt.objects(dataset_path)?.into_iter().filter(|t| t.get_state() != "stop").collect())
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -117,7 +105,7 @@ mod tests {
|
|
|
|
|
|
|
|
let mut task = TaskInfo::new("test_title", "test_desc", None, 0.0, &dataset_path)?;
|
|
let mut task = TaskInfo::new("test_title", "test_desc", None, 0.0, &dataset_path)?;
|
|
|
|
|
|
|
|
- task.save()?;
|
|
|
|
|
|
|
+ task.save(&dataset_path)?;
|
|
|
|
|
|
|
|
let t_load = TaskInfo::load(&task.ref_id, &dataset_path)?;
|
|
let t_load = TaskInfo::load(&task.ref_id, &dataset_path)?;
|
|
|
|
|
|
|
@@ -125,7 +113,7 @@ mod tests {
|
|
|
|
|
|
|
|
task.set_title("test_title_2");
|
|
task.set_title("test_title_2");
|
|
|
|
|
|
|
|
- task.save()?;
|
|
|
|
|
|
|
+ task.save(&dataset_path)?;
|
|
|
|
|
|
|
|
let t_load = TaskInfo::load(&task.ref_id, &dataset_path)?;
|
|
let t_load = TaskInfo::load(&task.ref_id, &dataset_path)?;
|
|
|
|
|
|
|
@@ -136,9 +124,9 @@ mod tests {
|
|
|
|
|
|
|
|
let task_tks = vec![];
|
|
let task_tks = vec![];
|
|
|
|
|
|
|
|
- let mut mt = MonthTasks::new(&task_tks, &dataset_path);
|
|
|
|
|
|
|
+ let mut mt = MonthTasks::new(&task_tks);
|
|
|
|
|
|
|
|
- mt.save()?;
|
|
|
|
|
|
|
+ mt.save(&dataset_path)?;
|
|
|
|
|
|
|
|
let mt_load = MonthTasks::load_or_create(&get_current_time(), &dataset_path)?;
|
|
let mt_load = MonthTasks::load_or_create(&get_current_time(), &dataset_path)?;
|
|
|
|
|
|
|
@@ -146,7 +134,7 @@ mod tests {
|
|
|
|
|
|
|
|
mt.add(&task.ref_id);
|
|
mt.add(&task.ref_id);
|
|
|
|
|
|
|
|
- mt.save()?;
|
|
|
|
|
|
|
+ mt.save(&dataset_path)?;
|
|
|
|
|
|
|
|
let mt_load = MonthTasks::load_or_create(&get_current_time(), &dataset_path)?;
|
|
let mt_load = MonthTasks::load_or_create(&get_current_time(), &dataset_path)?;
|
|
|
|
|
|
|
@@ -157,7 +145,7 @@ mod tests {
|
|
|
|
|
|
|
|
let task = TaskInfo::new("test_title_3", "test_desc", None, 0.0, &dataset_path)?;
|
|
let task = TaskInfo::new("test_title_3", "test_desc", None, 0.0, &dataset_path)?;
|
|
|
|
|
|
|
|
- task.save()?;
|
|
|
|
|
|
|
+ task.save(&dataset_path)?;
|
|
|
|
|
|
|
|
let mt_load = MonthTasks::load_or_create(&get_current_time(), &dataset_path)?;
|
|
let mt_load = MonthTasks::load_or_create(&get_current_time(), &dataset_path)?;
|
|
|
|
|
|