handle adding drinks when no open shift exists

main
Zynh0722 2023-11-06 20:16:27 -08:00
parent 58fa1864d1
commit a22cb3b306
1 changed files with 14 additions and 3 deletions

View File

@ -2,9 +2,10 @@ use std::time::Duration;
use axum::{ use axum::{
extract::{Path, State}, extract::{Path, State},
http::StatusCode,
response::{ response::{
sse::{Event, KeepAlive}, sse::{Event, KeepAlive},
IntoResponse, Sse, IntoResponse, Response, Sse,
}, },
routing::{get, post}, routing::{get, post},
Form, Form,
@ -99,7 +100,7 @@ async fn add_drink(
State(state): State<AppState>, State(state): State<AppState>,
HxRequest(hx): HxRequest, HxRequest(hx): HxRequest,
Form(form): Form<DrinkForm>, Form(form): Form<DrinkForm>,
) -> impl IntoResponse { ) -> Response {
let mut conn = state.connection.get().await.unwrap(); let mut conn = state.connection.get().await.unwrap();
let open_shift: Option<Shift> = { let open_shift: Option<Shift> = {
@ -113,7 +114,16 @@ async fn add_drink(
.optional() .optional()
.expect("Query failed: No open shifts found") .expect("Query failed: No open shifts found")
}; };
let open_shift = open_shift.unwrap();
if open_shift.is_none() {
return (
StatusCode::CONFLICT,
"Unable to to add a drink when no shift is open",
)
.into_response();
}
let open_shift = unsafe { open_shift.unwrap_unchecked() };
{ {
use cm_lib::schema::drinks::dsl::*; use cm_lib::schema::drinks::dsl::*;
@ -131,6 +141,7 @@ async fn add_drink(
headers, headers,
render!(crate::templates::home_html, Some(open_shift), !hx), render!(crate::templates::home_html, Some(open_shift), !hx),
) )
.into_response()
} }
#[derive(Deserialize, Debug)] #[derive(Deserialize, Debug)]