From 164184e5e9e62e1457d7c0e8befe2ecc029c6e8d Mon Sep 17 00:00:00 2001 From: AINDUSTRIES Date: Fri, 4 Oct 2024 21:00:53 +0200 Subject: [PATCH] user can add player while voting --- src/main.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 740979a..a5b71f1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -391,14 +391,19 @@ async fn post_player(req: Request, db: Arc>) -> Resu let name = data.get("name").unwrap().as_str().unwrap(); let pool = db.clone().lock().unwrap().clone(); let mut conn = pool.acquire().await.unwrap(); - let r = sqlx::query!(r#"INSERT INTO players (name) VALUES (?1)"#, data).execute(&mut *conn).await; + if let Ok(Some(player)) = sqlx::query!(r#"SELECT * FROM players WHERE name = ?1"#, name).fetch_optional(&pool).await { + let player = Player{id: player.id, name: player.name}; + return Ok(Response::builder().body(Body::new(serde_json::to_string(&player).unwrap())).unwrap()); + } + let r = sqlx::query!(r#"INSERT INTO players (name) VALUES (?1) RETURNING id"#, name).fetch_one(&mut *conn).await; if r.is_err() { return Ok(Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .body(Body::Empty) .unwrap()); } - ok().await + let player = Player{id: r.unwrap().id, name: name.to_string()}; + Ok(Response::builder().body(Body::new(serde_json::to_string(&player).unwrap())).unwrap()) } async fn post_admin(