diff --git a/crates/core/database/src/models/bots/model.rs b/crates/core/database/src/models/bots/model.rs index cb36d008..922d574d 100644 --- a/crates/core/database/src/models/bots/model.rs +++ b/crates/core/database/src/models/bots/model.rs @@ -72,7 +72,12 @@ impl Default for Bot { #[allow(clippy::disallowed_methods)] impl Bot { /// Create a new bot - pub async fn create(db: &Database, username: String, owner: &User, data: D) -> Result + pub async fn create( + db: &Database, + username: String, + owner: &User, + data: D, + ) -> Result<(Bot, User)> where D: Into>, { @@ -86,7 +91,7 @@ impl Bot { let id = Ulid::new().to_string(); - User::create( + let user = User::create( db, username, Some(id.to_string()), @@ -111,7 +116,7 @@ impl Bot { } db.insert_bot(&bot).await?; - Ok(bot) + Ok((bot, user)) } /// Remove a field from this object diff --git a/crates/core/models/src/v0/bots.rs b/crates/core/models/src/v0/bots.rs index 57995ae9..0e58bd15 100644 --- a/crates/core/models/src/v0/bots.rs +++ b/crates/core/models/src/v0/bots.rs @@ -162,4 +162,11 @@ auto_derived!( /// User objects pub users: Vec, } + + /// Bot with user response + pub struct BotWithUserResponse { + #[serde(flatten)] + pub bot: Bot, + pub user: User, + } ); diff --git a/crates/delta/src/routes/bots/create.rs b/crates/delta/src/routes/bots/create.rs index f92b98e9..67a97f07 100644 --- a/crates/delta/src/routes/bots/create.rs +++ b/crates/delta/src/routes/bots/create.rs @@ -14,7 +14,7 @@ pub async fn create_bot( db: &State, user: User, info: Json, -) -> Result> { +) -> Result> { let info = info.into_inner(); info.validate().map_err(|error| { create_error!(FailedValidation { @@ -22,8 +22,11 @@ pub async fn create_bot( }) })?; - let bot = Bot::create(db, info.name, &user, None).await?; - Ok(Json(bot.into())) + let (bot, user) = Bot::create(db, info.name, &user, None).await?; + Ok(Json(v0::BotWithUserResponse { + bot: bot.into(), + user: user.into_self(false).await, + })) } #[cfg(test)] diff --git a/crates/delta/src/routes/bots/delete.rs b/crates/delta/src/routes/bots/delete.rs index 6b421b67..7785a544 100644 --- a/crates/delta/src/routes/bots/delete.rs +++ b/crates/delta/src/routes/bots/delete.rs @@ -32,7 +32,7 @@ mod test { let mut harness = TestHarness::new().await; let (_, session, user) = harness.new_user().await; - let bot = Bot::create(&harness.db, TestHarness::rand_string(), &user, None) + let (bot, _) = Bot::create(&harness.db, TestHarness::rand_string(), &user, None) .await .expect("`Bot`"); diff --git a/crates/delta/src/routes/bots/edit.rs b/crates/delta/src/routes/bots/edit.rs index 70170177..e90b4bef 100644 --- a/crates/delta/src/routes/bots/edit.rs +++ b/crates/delta/src/routes/bots/edit.rs @@ -16,7 +16,7 @@ pub async fn edit_bot( user: User, target: Reference, data: Json, -) -> Result> { +) -> Result> { let data = data.into_inner(); data.validate().map_err(|error| { create_error!(FailedValidation { @@ -29,8 +29,8 @@ pub async fn edit_bot( return Err(create_error!(NotFound)); } + let mut user = db.fetch_user(&bot.id).await?; if let Some(name) = data.name { - let mut user = db.fetch_user(&bot.id).await?; user.update_username(db, name).await?; } @@ -39,7 +39,10 @@ pub async fn edit_bot( && data.interactions_url.is_none() && data.remove.is_none() { - return Ok(Json(bot.into())); + return Ok(Json(v0::BotWithUserResponse { + bot: bot.into(), + user: user.into_self(false).await, + })); } let DataEditBot { @@ -68,7 +71,10 @@ pub async fn edit_bot( ) .await?; - Ok(Json(bot.into())) + Ok(Json(v0::BotWithUserResponse { + bot: bot.into(), + user: user.into_self(false).await, + })) } #[cfg(test)] @@ -83,7 +89,7 @@ mod test { let harness = TestHarness::new().await; let (_, session, user) = harness.new_user().await; - let bot = Bot::create(&harness.db, TestHarness::rand_string(), &user, None) + let (bot, _) = Bot::create(&harness.db, TestHarness::rand_string(), &user, None) .await .expect("`Bot`"); diff --git a/crates/delta/src/routes/bots/fetch.rs b/crates/delta/src/routes/bots/fetch.rs index 6e922f71..a5222b8f 100644 --- a/crates/delta/src/routes/bots/fetch.rs +++ b/crates/delta/src/routes/bots/fetch.rs @@ -40,7 +40,7 @@ mod test { let harness = TestHarness::new().await; let (_, session, user) = harness.new_user().await; - let bot = Bot::create(&harness.db, TestHarness::rand_string(), &user, None) + let (bot, _) = Bot::create(&harness.db, TestHarness::rand_string(), &user, None) .await .expect("`Bot`"); diff --git a/crates/delta/src/routes/bots/fetch_owned.rs b/crates/delta/src/routes/bots/fetch_owned.rs index db4017ce..9eb320ef 100644 --- a/crates/delta/src/routes/bots/fetch_owned.rs +++ b/crates/delta/src/routes/bots/fetch_owned.rs @@ -41,7 +41,7 @@ mod test { let harness = TestHarness::new().await; let (_, session, user) = harness.new_user().await; - let bot = Bot::create(&harness.db, TestHarness::rand_string(), &user, None) + let (bot, _) = Bot::create(&harness.db, TestHarness::rand_string(), &user, None) .await .expect("`Bot`"); diff --git a/crates/delta/src/routes/bots/fetch_public.rs b/crates/delta/src/routes/bots/fetch_public.rs index 93ea1e7a..5363772c 100644 --- a/crates/delta/src/routes/bots/fetch_public.rs +++ b/crates/delta/src/routes/bots/fetch_public.rs @@ -35,7 +35,7 @@ mod test { let harness = TestHarness::new().await; let (_, _, user) = harness.new_user().await; - let mut bot = Bot::create(&harness.db, TestHarness::rand_string(), &user, None) + let (mut bot, _) = Bot::create(&harness.db, TestHarness::rand_string(), &user, None) .await .expect("`Bot`"); diff --git a/crates/delta/src/routes/bots/invite.rs b/crates/delta/src/routes/bots/invite.rs index 24228627..70e68bb6 100644 --- a/crates/delta/src/routes/bots/invite.rs +++ b/crates/delta/src/routes/bots/invite.rs @@ -74,7 +74,7 @@ mod test { let mut harness = TestHarness::new().await; let (_, session, user) = harness.new_user().await; - let bot = Bot::create(&harness.db, TestHarness::rand_string(), &user, None) + let (bot, _) = Bot::create(&harness.db, TestHarness::rand_string(), &user, None) .await .expect("`Bot`"); @@ -121,7 +121,7 @@ mod test { let mut harness = TestHarness::new().await; let (_, session, user) = harness.new_user().await; - let bot = Bot::create(&harness.db, TestHarness::rand_string(), &user, None) + let (bot, _) = Bot::create(&harness.db, TestHarness::rand_string(), &user, None) .await .expect("`Bot`");