From d4ee895b80983e648c9df28f074089c6369dd654 Mon Sep 17 00:00:00 2001 From: Colin McKechney Date: Mon, 1 May 2023 01:44:41 +0000 Subject: [PATCH] menu search complete --- backend/src/api/menu.rs | 17 +++++++++-------- backend/src/main.rs | 6 +++++- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/backend/src/api/menu.rs b/backend/src/api/menu.rs index 1e11344..0aeaf9a 100644 --- a/backend/src/api/menu.rs +++ b/backend/src/api/menu.rs @@ -1,7 +1,7 @@ use oracle::{Result, Connection}; use serde::{Serialize, Deserialize}; use log::{info, error}; -use actix_web::{self, Responder, web::Json, HttpResponse}; +use actix_web::{web::Json}; use crate::config::{ORACLE_USER, ORACLE_PASS, ORACLE_CON_STR}; @@ -23,15 +23,15 @@ pub struct SearchResult { serving_size: Option } -pub async menu_search(term: Json) -> Json { +pub async fn menu_search(term: Json) -> Json { let term = term.into_inner(); - match fuzzy_search(term) { + match fuzzy_search(&term.search_term) { Ok(result) => Json(result), Err(e) => { - error!("failed to search for {}", term); - Json(vec![]) + error!("failed to search for {}: {}", term.search_term, e); + Json(SearchResults::default()) } } @@ -39,11 +39,11 @@ pub async menu_search(term: Json) -> Json { fn fuzzy_search(term: &str) -> Result { let conn = Connection::connect(ORACLE_USER,ORACLE_PASS,ORACLE_CON_STR)?; - let stmt = conn.statement("select * from menu_item where item_name like :term").build()?; + let mut stmt = conn.statement(format!("select * from menu_item where item_name like '{}%'", term).as_str()).build()?; - let rows = stmt.query_named(&[("term", &term)])?; + let rows = stmt.query(&[])?; - let rows_vec = SearchResults::default(); + let mut rows_vec = SearchResults::default(); for row_result in rows{ let row = row_result?; @@ -54,6 +54,7 @@ fn fuzzy_search(term: &str) -> Result { serving_size: row.get(3).unwrap_or(None) }); } + conn.close()?; Ok(rows_vec) diff --git a/backend/src/main.rs b/backend/src/main.rs index e9506ef..e077a44 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -67,9 +67,13 @@ async fn main() -> std::io::Result<()> { web::resource("/week_meals") .route(web::post().to(api::week::week_meals)) ) - .service( + /* .service( web::resource("/week_progress/{net_id}") .route(web::get().to(api::week::week_lookup)) + ) */ + .service( + web::resource("/menu_search") + .route(web::post().to(api::menu::menu_search)) ) .route("/", web::get().to(api_index)) )