use crate::check::CheckReportAndVersion; use crate::nats_types::CheckMapfixRequest; #[allow(dead_code)] #[derive(Debug)] pub enum Error{ Check(crate::check::Error), ApiActionMapfixCheck(submissions_api::Error), } impl std::fmt::Display for Error{ fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{ write!(f,"{self:?}") } } impl std::error::Error for Error{} impl crate::message_handler::MessageHandler{ pub async fn check_mapfix(&self,check_info:CheckMapfixRequest)->Result<(),Error>{ let mapfix_id=check_info.MapfixID; let check_result=self.check_inner(check_info.into()).await; // update the mapfix depending on the result match check_result{ Ok(CheckReportAndVersion{report,version})=>{ if report.pass(){ // update the mapfix model status to submitted self.api.action_mapfix_submitted( submissions_api::types::ActionMapfixSubmittedRequest{ MapfixID:mapfix_id, ModelVersion:version, } ).await.map_err(Error::ApiActionMapfixCheck)?; }else{ // update the mapfix model status to request changes self.api.action_mapfix_request_changes( submissions_api::types::ActionMapfixRequestChangesRequest{ MapfixID:mapfix_id, ErrorMessage:report.to_string(), } ).await.map_err(Error::ApiActionMapfixCheck)?; } }, Err(e)=>{ // TODO: report the error // update the mapfix model status to request changes self.api.action_mapfix_request_changes( submissions_api::types::ActionMapfixRequestChangesRequest{ MapfixID:mapfix_id, ErrorMessage:e.to_string(), } ).await.map_err(Error::ApiActionMapfixCheck)?; }, } Ok(()) } }