summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2021-10-24 13:03:08 +0200
committerMatthias Beyer <mail@beyermatthias.de>2021-10-24 13:25:02 +0200
commit968dabc3653b7c19327021befb8b05ae806362fa (patch)
treed038aea9afebf1bb8f9f6ac1d0eebef7fbcf4516
parent11a7121a0efca380ed98ee3d652860175298bcc6 (diff)
Make person_create endpoint return person id
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--service-person/src/main.rs9
-rw-r--r--service-person/src/model/person.rs1
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")]