diff --git a/src/main.rs b/src/main.rs index 89dfb1c..343a8c4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -47,8 +47,8 @@ fn get_jobs(shared: State) -> Json { #[get("/request_job")] fn request_job(shared: State) -> Result, NotFound> { let mut list: Vec = shared.jobs.lock().unwrap() - .values().cloned() - .filter(|x| x.status == EStatus::Queued) + .values() + .filter(|x| x.status == EStatus::Queued).cloned() .collect(); list.sort_by(|a, b| b.description.length.cmp(&a.description.length)); @@ -70,20 +70,35 @@ fn get_job(id: Uuid, shared: State) -> Result, NotFound } } +#[get("/edit_status//")] +fn edit_status(id: Uuid, status: String, shared: State) -> Result> { + let mut list = shared.jobs.lock().unwrap(); + let job = list.get_mut(&id).ok_or("what")?; + let status = match status.as_str() { + "queued" => Ok(EStatus::Queued), + "reserved" => Ok(EStatus::Reserved), + "completed" => Ok(EStatus::Completed), + _ => Err("Not a valid status, valid statuses are queued, reserved, completed") + }?; + + job.status = status; + + Ok("Status changed".to_string()) +} + #[post("/add_job", format = "json", data = "")] -fn add_job(message: Json, shared: State) -> Result { +fn add_job(message: Json, shared: State) { println!("{:#?}", message); let job = message.into_inner(); let id = uuid::Uuid::new_v4(); shared.jobs.lock().unwrap().insert(id, WUnit::new(id, job)); - Ok(format!("{:#?}", shared)) } fn main() { rocket::ignite() .manage(SharedState::default()) - .mount("/", routes![index, version, get_jobs, get_job, request_job, add_job]) + .mount("/", routes![index, version, get_jobs, get_job, request_job, edit_status, add_job]) .launch(); } \ No newline at end of file diff --git a/src/workunit.rs b/src/workunit.rs index dfb4588..d7a1da7 100644 --- a/src/workunit.rs +++ b/src/workunit.rs @@ -97,7 +97,7 @@ impl Default for EColorDepth { #[derive(Debug, Serialize, Deserialize, PartialEq, Clone)] pub enum EStatus { Queued, - Reserved(Client), + Reserved, Completed } impl Default for EStatus {