2 Commits

Author SHA1 Message Date
eaf09135f4 Add PUT /family/{id}/member/{id_member} 2023-08-05 10:50:18 +02:00
e59ed6ed71 Add GET /family/{id}/members 2023-08-05 10:38:10 +02:00
2 changed files with 28 additions and 0 deletions

View File

@@ -242,7 +242,27 @@ pub async fn create(f: FamilyInPath, req: web::Json<MemberRequest>) -> HttpResul
Ok(HttpResponse::Ok().json(member))
}
/// Get the entire list of members of the family
pub async fn get_all(f: FamilyInPath) -> HttpResult {
let members = members_service::get_all_of_family(f.family_id()).await?;
Ok(HttpResponse::Ok().json(members))
}
/// Get the information of a single family member
pub async fn get_single(m: FamilyAndMemberInPath) -> HttpResult {
Ok(HttpResponse::Ok().json(m.to_member()))
}
/// Update a member information
pub async fn update(m: FamilyAndMemberInPath, req: web::Json<MemberRequest>) -> HttpResult {
let mut member = m.to_member();
if let Err(e) = req.0.to_member(&mut member).await {
log::error!("Failed to parse member information {e}!");
return Ok(HttpResponse::BadRequest().body(e.to_string()));
}
members_service::update(&mut member).await?;
Ok(HttpResponse::Accepted().finish())
}

View File

@@ -127,10 +127,18 @@ async fn main() -> std::io::Result<()> {
"/family/{id}/member/create",
web::post().to(members_controller::create),
)
.route(
"/family/{id}/members",
web::get().to(members_controller::get_all),
)
.route(
"/family/{id}/member/{member_id}",
web::get().to(members_controller::get_single),
)
.route(
"/family/{id}/member/{member_id}",
web::put().to(members_controller::update),
)
})
.bind(AppConfig::get().listen_address.as_str())?
.run()