accounted for null
This commit is contained in:
@@ -7,37 +7,36 @@ const ORACLE_USER: &str = "timmy";
|
|||||||
const ORACLE_PASS: &str = "timmy";
|
const ORACLE_PASS: &str = "timmy";
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug, Default)]
|
#[derive(Serialize, Deserialize, Debug, Default)]
|
||||||
struct FoodItem {
|
pub struct FoodItem {
|
||||||
item_id: u32,
|
item_id: u32,
|
||||||
eatery_id: u32,
|
eatery_id: Option<u32>,
|
||||||
item_name: String,
|
item_name: Option<String>,
|
||||||
serving_size: f32,
|
serving_size: Option<String>,
|
||||||
calories: f32,
|
calories: Option<f32>,
|
||||||
fat: f32,
|
fat: Option<f32>,
|
||||||
sat_fat: f32,
|
sat_fat: Option<f32>,
|
||||||
trans_fat: f32,
|
trans_fat: Option<f32>,
|
||||||
carbs: f32,
|
carbs: Option<f32>,
|
||||||
fiber: f32,
|
fiber: Option<f32>,
|
||||||
sugar: f32,
|
sugar: Option<f32>,
|
||||||
protein: f32,
|
protein: Option<f32>,
|
||||||
sodium: f32,
|
sodium: Option<f32>,
|
||||||
potassium: f32,
|
potassium: Option<f32>,
|
||||||
cholesterol: 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 eatery = eatery.into_inner();
|
||||||
let response = match grab_rows(eatery) {
|
let response = match grab_rows(eatery) {
|
||||||
Ok(r) => r,
|
Ok(r) => r,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
error!("Failed to grab rows: {}", e);
|
error!("Failed to grab rows: {}", e);
|
||||||
return HttpResponse::InternalServerError();
|
return Json(vec![]);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Json(response);
|
Json(response)
|
||||||
HttpResponse::Ok()
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,7 +45,7 @@ fn grab_rows(eatery: String) -> oracle::Result<Vec<FoodItem>> {
|
|||||||
|
|
||||||
let conn = Connection::connect(ORACLE_USER, ORACLE_PASS, "")?;
|
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])?;
|
let rows = stmt.query(&[&eatery])?;
|
||||||
@@ -56,20 +55,20 @@ fn grab_rows(eatery: String) -> oracle::Result<Vec<FoodItem>> {
|
|||||||
let row = row_result?;
|
let row = row_result?;
|
||||||
row_vec.push( FoodItem {
|
row_vec.push( FoodItem {
|
||||||
item_id: row.get(0)?,
|
item_id: row.get(0)?,
|
||||||
eatery_id: row.get(1)?,
|
eatery_id: row.get(1).unwrap_or(None),
|
||||||
item_name: row.get(2)?,
|
item_name: row.get(2).unwrap_or(None),
|
||||||
serving_size: row.get(3)?,
|
serving_size: row.get(3).unwrap_or(None),
|
||||||
calories: row.get(4)?,
|
calories: row.get(4).unwrap_or(None),
|
||||||
fat: row.get(5)?,
|
fat: row.get(5).unwrap_or(None),
|
||||||
sat_fat: row.get(6)?,
|
sat_fat: row.get(6).unwrap_or(None),
|
||||||
trans_fat: row.get(7)?,
|
trans_fat: row.get(7).unwrap_or(None),
|
||||||
carbs: row.get(8)?,
|
carbs: row.get(8).unwrap_or(None),
|
||||||
fiber: row.get(9)?,
|
fiber: row.get(9).unwrap_or(None),
|
||||||
sugar: row.get(10)?,
|
sugar: row.get(10).unwrap_or(None),
|
||||||
protein: row.get(11)?,
|
protein: row.get(11).unwrap_or(None),
|
||||||
sodium: row.get(12)?,
|
sodium: row.get(12).unwrap_or(None),
|
||||||
potassium: row.get(13)?,
|
potassium: row.get(13).unwrap_or(None),
|
||||||
cholesterol: row.get(14)?});
|
cholesterol: row.get(14).unwrap_or(None)});
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(row_vec)
|
Ok(row_vec)
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ async fn main() -> std::io::Result<()> {
|
|||||||
)
|
)
|
||||||
.route("/", web::get().to(index))
|
.route("/", web::get().to(index))
|
||||||
})
|
})
|
||||||
.bind(("127.0.0.1", PORT))?
|
.bind(("0.0.0.0", PORT))?
|
||||||
.run()
|
.run()
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user