From d63ba6aa3a2fb589a9c34df209d81bffd39a79e3 Mon Sep 17 00:00:00 2001 From: zzzz Date: Fri, 14 Jun 2024 15:00:35 +0200 Subject: [PATCH] split endpoints for steeping logging --- src/main.rs | 7 +++++- src/requests/post_requests.rs | 45 ++++++++++++++++++++--------------- 2 files changed, 32 insertions(+), 20 deletions(-) diff --git a/src/main.rs b/src/main.rs index bb21a1c..60f7d03 100644 --- a/src/main.rs +++ b/src/main.rs @@ -33,7 +33,12 @@ async fn main(#[shuttle_shared_db::Postgres] pool: PgPool) -> shuttle_axum::Shut .route("/types-of-tea", get(retrieve_types_of_tea)) .route("/types-of-tea/:id", post(update_tea_meta_by_id)) .route("/types-of-tea/:id", get(retrieve_tea_by_id)) - // update steeping time and trigger log entry + // trigger log entry of steeping time + .route( + "/tea-steeping-time-log/:id", + post(update_tea_steeping_time_log_by_id), + ) + // update target steeping time for next use (no log entry) .route( "/tea-steeping-time/:id", post(update_tea_steeping_time_by_id), diff --git a/src/requests/post_requests.rs b/src/requests/post_requests.rs index 1ad7a3a..f014137 100644 --- a/src/requests/post_requests.rs +++ b/src/requests/post_requests.rs @@ -1,4 +1,4 @@ -use crate::data::{Config, MyState, Tea, TeaMeta, TeaNew, TeaSteepingTimeChange}; +use crate::data::{Config, MyState, SteepingLog, Tea, TeaMeta, TeaNew, TeaSteepingTimeChange}; use axum::{ extract::{Path, State}, http::StatusCode, @@ -52,7 +52,6 @@ pub async fn update_tea_meta_by_id( } } -// used to update steeping time (triggers log entry) pub async fn update_tea_steeping_time_by_id( State(state): State, Path(id): Path, @@ -70,23 +69,31 @@ pub async fn update_tea_steeping_time_by_id( .fetch_one(&state.pool) .await { - Ok(tea) => { - // add steeping time change to steeping log - match sqlx::query( - " - INSERT INTO steepinglog (tea_id, steeping_seconds) - VALUES ($1, $2) - ", - ) - .bind(id) - .bind(steeping_time_change.new_steeping_seconds) - .execute(&state.pool) - .await - { - Ok(_) => Ok((StatusCode::OK, Json(tea))), - Err(e) => Err((StatusCode::BAD_REQUEST, e.to_string())), - } - } + Ok(tea) => Ok((StatusCode::OK, Json(tea))), + Err(e) => Err((StatusCode::BAD_REQUEST, e.to_string())), + } +} + +// triggers steeping time log entry +pub async fn update_tea_steeping_time_log_by_id( + State(state): State, + Path(id): Path, + Json(steeping_time_change): Json, +) -> Result { + // add steeping time change to steeping log + match sqlx::query_as::<_, SteepingLog>( + " + INSERT INTO steepinglog (tea_id, steeping_seconds) + VALUES ($1, $2) + RETURNING change_id, tea_id, steeping_seconds, steeping_tested_time + ", + ) + .bind(id) + .bind(steeping_time_change.new_steeping_seconds) + .fetch_one(&state.pool) + .await + { + Ok(log_entry) => Ok((StatusCode::OK, Json(log_entry))), Err(e) => Err((StatusCode::BAD_REQUEST, e.to_string())), } }