use exception::{Exception, StatusCode};
use myrmidon_types::TaskCreate;
use crate::Task;
use super::Tasks;
impl Tasks{
pub fn create(&mut self, task_create: TaskCreate) -> Task{
let task: Task = Task::new(task_create.get_name().clone(), task_create.get_commands().clone());
self.get_tasks_mut().insert(task.get_id().clone(), task.clone());
task
}
pub fn get(&mut self, id: &String) -> Option<&Task>{
self.get_task(id)
}
pub fn start(&mut self, id: &String) -> Result<Task, Exception>{
match self.get_task_mut(id){
Some(task) => {
task.start();
Ok(task.clone())
},
None => Err(Exception::new().status_code(StatusCode::NotFound).message(String::from("task"), String::from("not-found"))),
}
}
pub fn stop(&mut self, id: &String) -> Result<Task, Exception>{
match self.get_task_mut(id){
Some(task) => {
task.stop();
Ok(task.clone())
},
None => Err(Exception::new().status_code(StatusCode::NotFound).message(String::from("task"), String::from("not-found"))),
}
}
}