accounted for null

This commit is contained in:
Colin McKechney
2023-04-30 21:03:44 +00:00
parent ec08c12780
commit 5117a3318f
2 changed files with 34 additions and 35 deletions

View File

@@ -7,37 +7,36 @@ const ORACLE_USER: &str = "timmy";
const ORACLE_PASS: &str = "timmy";
#[derive(Serialize, Deserialize, Debug, Default)]
struct FoodItem {
pub struct FoodItem {
item_id: u32,
eatery_id: u32,
item_name: String,
serving_size: f32,
calories: f32,
fat: f32,
sat_fat: f32,
trans_fat: f32,
carbs: f32,
fiber: f32,
sugar: f32,
protein: f32,
sodium: f32,
potassium: f32,
cholesterol: f32
eatery_id: Option<u32>,
item_name: Option<String>,
serving_size: Option<String>,
calories: Option<f32>,
fat: Option<f32>,
sat_fat: Option<f32>,
trans_fat: Option<f32>,
carbs: Option<f32>,
fiber: Option<f32>,
sugar: Option<f32>,
protein: Option<f32>,
sodium: Option<f32>,
potassium: Option<f32>,
cholesterol: Option<f32>
}
pub async fn menu(eatery: Path<String>) -> impl Responder {
pub async fn menu(eatery: Path<String>) -> Json<Vec<FoodItem>> {
let eatery = eatery.into_inner();
let response = match grab_rows(eatery) {
Ok(r) => r,
Err(e) => {
error!("Failed to grab rows: {}", e);
return HttpResponse::InternalServerError();
return Json(vec![]);
}
};
Json(response);
HttpResponse::Ok()
Json(response)
}
@@ -46,7 +45,7 @@ fn grab_rows(eatery: String) -> oracle::Result<Vec<FoodItem>> {
let conn = Connection::connect(ORACLE_USER, ORACLE_PASS, "")?;
let mut stmt = conn.statement("select * from menu_item natural join nutrition_info food where menu_item.eatery_id = :1").build()?;
let mut stmt = conn.statement("select * from menu_item natural join nutrition_info where eatery_id = :1").build()?;
let rows = stmt.query(&[&eatery])?;
@@ -56,20 +55,20 @@ fn grab_rows(eatery: String) -> oracle::Result<Vec<FoodItem>> {
let row = row_result?;
row_vec.push( FoodItem {
item_id: row.get(0)?,
eatery_id: row.get(1)?,
item_name: row.get(2)?,
serving_size: row.get(3)?,
calories: row.get(4)?,
fat: row.get(5)?,
sat_fat: row.get(6)?,
trans_fat: row.get(7)?,
carbs: row.get(8)?,
fiber: row.get(9)?,
sugar: row.get(10)?,
protein: row.get(11)?,
sodium: row.get(12)?,
potassium: row.get(13)?,
cholesterol: row.get(14)?});
eatery_id: row.get(1).unwrap_or(None),
item_name: row.get(2).unwrap_or(None),
serving_size: row.get(3).unwrap_or(None),
calories: row.get(4).unwrap_or(None),
fat: row.get(5).unwrap_or(None),
sat_fat: row.get(6).unwrap_or(None),
trans_fat: row.get(7).unwrap_or(None),
carbs: row.get(8).unwrap_or(None),
fiber: row.get(9).unwrap_or(None),
sugar: row.get(10).unwrap_or(None),
protein: row.get(11).unwrap_or(None),
sodium: row.get(12).unwrap_or(None),
potassium: row.get(13).unwrap_or(None),
cholesterol: row.get(14).unwrap_or(None)});
}
Ok(row_vec)