From 577492b03cd5a8479575e6a0f5003284c6ba83be Mon Sep 17 00:00:00 2001 From: filipriec Date: Fri, 21 Feb 2025 22:10:48 +0100 Subject: [PATCH] working get request --- proto/uctovnictvo.proto | 5 ++ src/proto/descriptor.bin | Bin 8416 -> 8700 bytes src/server/mod.rs | 13 ++++- src/uctovnictvo/docs/get_examples.txt | 17 +++++++ src/uctovnictvo/handlers.rs | 2 + src/uctovnictvo/handlers/get_uctovnictvo.rs | 51 ++++++++++++++++++++ 6 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 src/uctovnictvo/docs/get_examples.txt create mode 100644 src/uctovnictvo/handlers/get_uctovnictvo.rs diff --git a/proto/uctovnictvo.proto b/proto/uctovnictvo.proto index fb549ef..816a642 100644 --- a/proto/uctovnictvo.proto +++ b/proto/uctovnictvo.proto @@ -7,6 +7,7 @@ import "adresar.proto"; service Uctovnictvo { rpc PostUctovnictvo (PostUctovnictvoRequest) returns (UctovnictvoResponse); + rpc GetUctovnictvo (GetUctovnictvoRequest) returns (UctovnictvoResponse); } message PostUctovnictvoRequest { @@ -37,3 +38,7 @@ message UctovnictvoResponse { string poznanka = 11; string firma = 12; } + +message GetUctovnictvoRequest { + int64 id = 1; +} diff --git a/src/proto/descriptor.bin b/src/proto/descriptor.bin index 155655a559e00ed6128a92937baacc1f6db727e5..b5d6e25e65e2536609c5f86af6e3869c6912e9a4 100644 GIT binary patch delta 1573 zcmY+DyN=U96ox(HN#cw*i8Ha|ko$ev?9xC(2|}wyLP%&OUVxBdDF~Oa4TWET0x3^` zgb*bX&jK|aEe}A!f1KkZ(fQZRH~(Bd|GNM8!MD$;{uzJ&l77`^(_@=lY<5rAyY2PM ztM%@Bd%1c2Zu55M>Q-Mp@2Ii5>0jdO_HVU+(tRJh7q_2qxRX^5j z*%{@X?tgU8mEHGx=UHe?+0)ATRrA;$*%AdxLAyvAsdKAHKGNMs)>>^mXO6s%!nbcc zFh{}AVmae!&-pcTgAfWOO4TA^V$H@ydWiLEX@@zC)rC{w>c;X++EhI(I0dW@Y@OF( zhmHN8-X?3vbUINZj2PCK-e|?#f)GiIkCsRXfDS`77lk!jiEDkCE&eHImC!20|)N<+ATU>evU-+e{}WZr<^6balw zID{c9q%@f~JC4*q5Qg24@z~w-u-mVlvFAOr2Y?eGvE&%O!3CESI=Am|$x@F$NYSE(R8SKK6ixvchsb z-TgF}!Upb5!4<+y!4-Z!_P`Zc&Xw5|y^E!T0 zRNy+{P;6KsrOCVvZ;cArhPOsVlWdUEFmEeyWZqUVGH*Mk_1c2lN*pG45=Z9kgd_8I z5=Z9kBo5~7C63J73r6Pc$2c7W+e_Ls^ya{Csx+B*5RS|{u(9ZYI}FBJTo}wdval$C z9R(xvjw~#Cz>X}e(lGC2@Ay?oypzRW>GsHE-ieLHB)C)6@RP&5vusD^oh6RUJF~D# nlX+(rR%sv1MV9lxE`oVr7rM)GFwBFy6xG}K, + ) -> Result, Status> { + let response = get_uctovnictvo(&self.db_pool, request.into_inner()).await?; + Ok(Response::new(response)) + } } pub async fn run_server(db_pool: sqlx::PgPool) -> Result<(), Box> { diff --git a/src/uctovnictvo/docs/get_examples.txt b/src/uctovnictvo/docs/get_examples.txt new file mode 100644 index 0000000..cac59cc --- /dev/null +++ b/src/uctovnictvo/docs/get_examples.txt @@ -0,0 +1,17 @@ +❯ grpcurl -plaintext -d '{ + "id": 1 +}' localhost:50051 multieko2.uctovnictvo.Uctovnictvo/GetUctovnictvo +{ + "id": "1", + "adresarId": "1", + "cDokladu": "DOC123", + "datum": "01.10.2023", + "cFaktury": "INV123", + "obsah": "Sample content", + "stredisko": "Center A", + "cUctu": "ACC123", + "md": "MD123", + "identif": "ID123", + "poznanka": "Sample note", + "firma": "AAA" +} diff --git a/src/uctovnictvo/handlers.rs b/src/uctovnictvo/handlers.rs index f3a32d1..807ed00 100644 --- a/src/uctovnictvo/handlers.rs +++ b/src/uctovnictvo/handlers.rs @@ -1,5 +1,7 @@ // src/uctovnictvo/handlers.rs pub mod post_uctovnictvo; +pub mod get_uctovnictvo; // Add this line pub use post_uctovnictvo::post_uctovnictvo; +pub use get_uctovnictvo::get_uctovnictvo; // Add this line diff --git a/src/uctovnictvo/handlers/get_uctovnictvo.rs b/src/uctovnictvo/handlers/get_uctovnictvo.rs new file mode 100644 index 0000000..474a3e1 --- /dev/null +++ b/src/uctovnictvo/handlers/get_uctovnictvo.rs @@ -0,0 +1,51 @@ +// src/uctovnictvo/handlers/get_uctovnictvo.rs +use tonic::Status; +use sqlx::PgPool; +use crate::uctovnictvo::models::Uctovnictvo; +use crate::proto::multieko2::uctovnictvo::{GetUctovnictvoRequest, UctovnictvoResponse}; + +pub async fn get_uctovnictvo( + db_pool: &PgPool, + request: GetUctovnictvoRequest, +) -> Result { + let uctovnictvo = sqlx::query_as!( + Uctovnictvo, + r#" + SELECT + id, + deleted, + adresar_id, + c_dokladu, + datum as "datum: chrono::NaiveDate", + c_faktury, + obsah, + stredisko, + c_uctu, + md, + identif, + poznanka, + firma + FROM uctovnictvo + WHERE id = $1 + "#, + request.id + ) + .fetch_one(db_pool) + .await + .map_err(|e| Status::not_found(e.to_string()))?; + + Ok(UctovnictvoResponse { + id: uctovnictvo.id, + adresar_id: uctovnictvo.adresar_id, + c_dokladu: uctovnictvo.c_dokladu, + datum: uctovnictvo.datum.format("%d.%m.%Y").to_string(), + c_faktury: uctovnictvo.c_faktury, + obsah: uctovnictvo.obsah.unwrap_or_default(), + stredisko: uctovnictvo.stredisko.unwrap_or_default(), + c_uctu: uctovnictvo.c_uctu.unwrap_or_default(), + md: uctovnictvo.md.unwrap_or_default(), + identif: uctovnictvo.identif.unwrap_or_default(), + poznanka: uctovnictvo.poznanka.unwrap_or_default(), + firma: uctovnictvo.firma, + }) +}