diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2021-10-24 13:03:08 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2021-10-24 13:25:02 +0200 |
commit | 968dabc3653b7c19327021befb8b05ae806362fa (patch) | |
tree | d038aea9afebf1bb8f9f6ac1d0eebef7fbcf4516 | |
parent | 11a7121a0efca380ed98ee3d652860175298bcc6 (diff) |
Make person_create endpoint return person id
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r-- | service-person/src/main.rs | 9 | ||||
-rw-r--r-- | service-person/src/model/person.rs | 1 |
2 files changed, 8 insertions, 2 deletions
diff --git a/service-person/src/main.rs b/service-person/src/main.rs index 1350115..31050e0 100644 --- a/service-person/src/main.rs +++ b/service-person/src/main.rs @@ -27,6 +27,11 @@ pub struct PersonCreateRequestData { number: i32, } +#[derive(Debug, serde::Serialize)] +pub struct PersonCreateResponse { + id: i32 +} + async fn create_person(db: web::Data<DbPool>, person: web::Json<PersonCreateRequestData>) -> impl Responder { log::debug!("Creating person = {:?}", person); @@ -36,7 +41,7 @@ async fn create_person(db: web::Data<DbPool>, person: web::Json<PersonCreateRequ let street = crate::model::Street::create_or_fetch(&db, &person.street)?; let address = crate::model::Address::create_or_fetch(&db, &country, &city, &street, person.number)?; let person = crate::model::Person::create_or_fetch(&db, &address, &person.name, person.age)?; - Ok(()) + Ok(person.id()) }; inner(&db, &person) @@ -44,7 +49,7 @@ async fn create_person(db: web::Data<DbPool>, person: web::Json<PersonCreateRequ log::error!("{}", anyhow_error); HttpResponse::build(actix_web::http::StatusCode::INTERNAL_SERVER_ERROR).finish() }) - .map(|_| HttpResponse::Ok().finish()) + .map(|id| HttpResponse::Ok().json(PersonCreateResponse { id })) } diff --git a/service-person/src/model/person.rs b/service-person/src/model/person.rs index df1a2da..0a1d5c5 100644 --- a/service-person/src/model/person.rs +++ b/service-person/src/model/person.rs @@ -15,6 +15,7 @@ use crate::schema; #[belongs_to(Address)] #[table_name = "persons"] pub struct Person { + #[getset(get_copy = "pub")] id: i32, #[getset(get = "pub")] |