Skip to content

Commit

Permalink
add user-facing exceptions for analyzer command
Browse files Browse the repository at this point in the history
  • Loading branch information
keinsell committed Feb 2, 2025
1 parent 0b32b8c commit fc02c01
Showing 1 changed file with 20 additions and 23 deletions.
43 changes: 20 additions & 23 deletions src/cli/analyze.rs
Original file line number Diff line number Diff line change
Expand Up @@ -196,43 +196,40 @@ impl CommandHandler for AnalyzeIngestion
{
let ingestion: Ingestion = match self.ingestion_id
{
| Some(..) =>
{
crate::database::entities::ingestion::Entity::find_by_id(self.ingestion_id.unwrap())
.one(ctx.database_connection)
.await
.into_diagnostic()?
.unwrap_or_else(|| panic!("Ingestion not found"))
.into()
}
| Some(id) =>
{
crate::database::entities::ingestion::Entity::find_by_id(id)
.one(ctx.database_connection)
.await
.into_diagnostic()?
.ok_or_else(|| miette::miette!("Ingestion not found"))?
.into()
}
| None => Ingestion {
id: Default::default(),
dosage: self.dosage.clone().expect("Dosage not provided"),
route: self.roa.unwrap(),
substance: self.substance.clone().expect("Substance not provided"),
dosage: self.dosage.clone().ok_or_else(|| miette::miette!("Dosage not provided"))?,
route: self.roa.ok_or_else(|| miette::miette!("Route of administration not provided"))?,
substance: self.substance.clone().ok_or_else(|| miette::miette!("Substance not provided"))?,
ingestion_date: self.date.unwrap_or_else(Local::now),
},
};

let substance = crate::substance::repository::get_substance(
&ingestion.substance.clone(),
&ingestion.substance,
ctx.database_connection,
)
.await?;
.await?;

if substance.is_some()
{
let substance = substance.unwrap();
let analysis = IngestionAnalysis::analyze(ingestion, substance)
.await?;
let view_model: AnalyzerReportViewModel = analysis.into();
println!("{}", view_model.format(ctx.stdout_format));
}
let substance = substance.ok_or_else(|| miette::miette!("Substance not found"))?;

let analysis = IngestionAnalysis::analyze(ingestion, substance)
.await?;
let view_model: AnalyzerReportViewModel = analysis.into();
println!("{}", view_model.format(ctx.stdout_format));

Ok(())
}
}

#[cfg(test)]
mod tests {
use super::*;
Expand Down

0 comments on commit fc02c01

Please sign in to comment.