diff --git a/api/src/lib.rs b/api/src/lib.rs index ed3f793..782aa91 100644 --- a/api/src/lib.rs +++ b/api/src/lib.rs @@ -38,6 +38,11 @@ pub struct CreateHouseholdResponse { pub id: Uuid, } +#[derive(Serialize, Deserialize)] +pub struct RenameHouseholdRequest { + pub name: String, +} + #[derive(Serialize, Deserialize)] pub struct AddToHouseholdRequest { pub user: Uuid, diff --git a/src/routes/household.rs b/src/routes/household.rs index 46da2a6..1106471 100644 --- a/src/routes/household.rs +++ b/src/routes/household.rs @@ -11,7 +11,7 @@ use sea_query::OnConflict; use api::{ AddToHouseholdRequest, CreateHouseholdRequest, CreateHouseholdResponse, EmptyResponse, - Households, + Households, RenameHouseholdRequest, }; use serde::Deserialize; @@ -154,3 +154,17 @@ pub(super) async fn leave( Ok(Json(EmptyResponse {})) } + +pub(super) async fn rename( + AuthorizedHousehold(household): AuthorizedHousehold, + state: State, + Json(request): Json, +) -> super::JsonResult { + let mut household: household::ActiveModel = household.into(); + + household.name = ActiveValue::Set(request.name); + + household.update(&state.db).await?; + + Ok(Json(EmptyResponse {})) +} diff --git a/src/routes/mod.rs b/src/routes/mod.rs index d4c6aaf..898b37e 100644 --- a/src/routes/mod.rs +++ b/src/routes/mod.rs @@ -188,7 +188,8 @@ pub(crate) fn router(api_allowed: Option) -> Router { "/household/:house_id", put(household::add_member) .delete(household::leave) - .layer(mk_service(vec![Method::PUT, Method::DELETE])), + .patch(household::rename) + .layer(mk_service(vec![Method::PUT, Method::DELETE, Method::PATCH])), ) .route( "/household/:house_id/ingredients/:iid",