added 3 new endpoints

This commit is contained in:
Colin McKechney
2023-05-02 17:53:33 -04:00
parent c37166eb12
commit 1517e72833
5 changed files with 131 additions and 0 deletions

View File

@@ -3,4 +3,6 @@ pub mod eatery;
pub mod plan;
pub mod week;
pub mod menu;
pub mod result;

View File

@@ -47,6 +47,18 @@ pub async fn plan_lookup(net_id: Path<String>) -> Json<PlanData> {
}
pub async fn all_plan(net_id: Path<String>) -> Json<Vec<PlanData>> {
let net_id = net_id.into_inner();
match get_all_plan(&net_id) {
Ok(plans) => Json(plans),
Err(e) => {
error!("failed to grab plans from {}: {}", net_id, e);
Json(vec![])
}
}
}
fn create_plan(plan: PlanData) -> Result<()> {
let conn = Connection::connect(ORACLE_USER, ORACLE_PASS, ORACLE_CON_STR)?;
@@ -105,3 +117,36 @@ fn plan_search(net_id: &str) -> Result<PlanData> {
Ok(plan)
}
fn get_all_plan(net_id: &str) -> Result<Vec<PlanData>> {
let conn = Connection::connect(ORACLE_USER, ORACLE_PASS, ORACLE_CON_STR)?;
let mut stmt = conn.statement("select * from goal where s_net_id = :1 order by week_date").build()?;
let rows = stmt.query(&[&net_id])?;
let mut row_vec: Vec<PlanData> = vec![];
for row_result in rows {
let row = row_result?;
row_vec.push(PlanData {
net_id: row.get(0)?,
week_date: row.get(1)?,
total_cal: row.get(2).unwrap_or(None),
total_fat: row.get(3).unwrap_or(None),
total_sat_fat: row.get(4).unwrap_or(None),
total_trans_fat: row.get(5).unwrap_or(None),
total_carbs: row.get(6).unwrap_or(None),
total_fiber: row.get(7).unwrap_or(None),
total_sugar: row.get(8).unwrap_or(None),
total_protein: row.get(9).unwrap_or(None),
total_sodium: row.get(10).unwrap_or(None),
total_potassium: row.get(11).unwrap_or(None),
total_cholesterol: row.get(12).unwrap_or(None)});
}
Ok(row_vec)
}

48
backend/src/api/result.rs Normal file
View File

@@ -0,0 +1,48 @@
use log::error;
use actix_web::{web::Json, web::Path};
use oracle::{Connection, Result};
use crate::{api::plan::PlanData, config::{ORACLE_USER, ORACLE_PASS, ORACLE_CON_STR}};
pub async fn all_result(net_id: Path<String>) -> Json<Vec<PlanData>> {
let net_id = net_id.into_inner();
match get_result(&net_id){
Ok(r) => Json(r),
Err(e) => {
error!("failed to get results for user {}: {}", net_id, e);
Json(vec![])
}
}
}
fn get_result(net_id: &str) -> Result<Vec<PlanData>> {
let conn = Connection::connect(ORACLE_USER, ORACLE_PASS, ORACLE_CON_STR)?;
let mut stmt = conn.statement("select * from result where net_id = :1").build()?;
let rows = stmt.query(&[&net_id])?;
let mut row_vec: Vec<PlanData> = vec![];
for row_result in rows {
let row = row_result?;
row_vec.push(PlanData {
net_id: row.get(0)?,
week_date: row.get(1)?,
total_cal: row.get(2).unwrap_or(None),
total_fat: row.get(3).unwrap_or(None),
total_sat_fat: row.get(4).unwrap_or(None),
total_trans_fat: row.get(5).unwrap_or(None),
total_carbs: row.get(6).unwrap_or(None),
total_fiber: row.get(7).unwrap_or(None),
total_sugar: row.get(8).unwrap_or(None),
total_protein: row.get(9).unwrap_or(None),
total_sodium: row.get(10).unwrap_or(None),
total_potassium: row.get(11).unwrap_or(None),
total_cholesterol: row.get(12).unwrap_or(None) });
}
Ok(row_vec)
}

View File

@@ -130,6 +130,19 @@ pub async fn week_sums(net_id: Path<String>) -> Json<Sums> {
}
pub async fn delete_meals(items: Json<MenuItems> ) -> impl Responder {
let items = items.into_inner();
match week_meal_delete(&items) {
Ok(_) => HttpResponse::Ok(),
Err(e) => {
error!("failed to delete items from {}: {}", items.net_id, e);
HttpResponse::InternalServerError()
}
}
}
fn add_item(item: &ItemData) -> Result<()> {
let conn = Connection::connect(ORACLE_USER, ORACLE_PASS, ORACLE_CON_STR)? ;
@@ -264,3 +277,17 @@ fn get_week(net_id: &str) -> Result<Vec<ItemResult>> {
}
fn week_meal_delete(items: &MenuItems) -> Result<()> {
let conn = Connection::connect(ORACLE_USER, ORACLE_PASS, ORACLE_CON_STR)?;
let mut stmt = conn.statement(format!("delete from {} where item_id = :1", items.net_id).as_str()).build()?;
for meal in items.item_list {
stmt.execute(&[&items.net_id])?;
}
Ok(())
}

View File

@@ -70,6 +70,7 @@ async fn main() -> std::io::Result<()> {
.service(
web::resource("/week_meals")
.route(web::post().to(api::week::week_meals))
.route(web::delete().to(api::week::delete_meals))
)
.service(
web::resource("/week_progress/{net_id}")
@@ -83,6 +84,14 @@ async fn main() -> std::io::Result<()> {
web::resource("week_sum/{net_id}")
.route(web::get().to(api::week::week_sums))
)
.service(
web::resource("all_goal/{net_id}")
.route(web::get().to(api::plan::all_plan))
)
.service(
web::resource("result/{net_id}")
.route(web::get().to(api::result::all_result))
)
.route("/", web::get().to(api_index))
)
.route("/", web::get().to(index))