From 90dfc3dec45b3f5d5700f711130d04a5f4d958db Mon Sep 17 00:00:00 2001 From: Ilion Beyst Date: Sun, 24 Jul 2022 18:05:20 +0200 Subject: create new bot flow --- planetwars-server/src/routes/bots.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'planetwars-server/src/routes/bots.rs') diff --git a/planetwars-server/src/routes/bots.rs b/planetwars-server/src/routes/bots.rs index 8de479f..f2bf202 100644 --- a/planetwars-server/src/routes/bots.rs +++ b/planetwars-server/src/routes/bots.rs @@ -134,17 +134,25 @@ pub struct BotParams { name: String, } +// TODO: can we unify this with save_bot? pub async fn create_bot( conn: DatabaseConnection, user: User, params: Json, -) -> (StatusCode, Json) { +) -> Result<(StatusCode, Json), SaveBotError> { + validate_bot_name(¶ms.name)?; + let existing_bot = bots::find_bot_by_name(¶ms.name, &conn) + .optional() + .expect("could not run query"); + if existing_bot.is_some() { + return Err(SaveBotError::BotNameTaken); + } let bot_params = bots::NewBot { owner_id: Some(user.id), name: ¶ms.name, }; let bot = bots::create_bot(&bot_params, &conn).unwrap(); - (StatusCode::CREATED, Json(bot)) + Ok((StatusCode::CREATED, Json(bot))) } // TODO: handle errors -- cgit v1.2.3