From 103250d79320318ac38a19dbf0d91ee15cca218c Mon Sep 17 00:00:00 2001 From: filipriec Date: Mon, 17 Feb 2025 22:23:24 +0100 Subject: [PATCH] working put --- proto/api.proto | 20 +++++++ src/adresar/handlers.rs | 2 + src/adresar/handlers/update_adresar.rs | 73 +++++++++++++++++++++++++ src/proto/descriptor.bin | Bin 3380 -> 4815 bytes src/server/mod.rs | 23 +++++--- 5 files changed, 110 insertions(+), 8 deletions(-) create mode 100644 src/adresar/handlers/update_adresar.rs diff --git a/proto/api.proto b/proto/api.proto index ebe0ec4..4e685fb 100644 --- a/proto/api.proto +++ b/proto/api.proto @@ -10,6 +10,7 @@ service DataProcessor { service Adresar { rpc CreateAdresar (AdresarRequest) returns (AdresarResponse); rpc GetAdresar (GetAdresarRequest) returns (AdresarResponse); + rpc UpdateAdresar (UpdateAdresarRequest) returns (AdresarResponse); } message GetAdresarRequest { @@ -53,6 +54,25 @@ message AdresarResponse { string fax = 16; } +message UpdateAdresarRequest { + int64 id = 1; // The ID of the Adresar entry to update + string firma = 2; + string kz = 3; + string drc = 4; + string ulica = 5; + string psc = 6; + string mesto = 7; + string stat = 8; + string banka = 9; + string ucet = 10; + string skladm = 11; + string ico = 12; + string kontakt = 13; + string telefon = 14; + string skladu = 15; + string fax = 16; +} + message DataRequest { string data = 1; } diff --git a/src/adresar/handlers.rs b/src/adresar/handlers.rs index 3c235c5..aa44aa2 100644 --- a/src/adresar/handlers.rs +++ b/src/adresar/handlers.rs @@ -2,6 +2,8 @@ pub mod create_adresar; pub mod get_adresar; +pub mod update_adresar; pub use create_adresar::create_adresar; pub use get_adresar::get_adresar; +pub use update_adresar::update_adresar; diff --git a/src/adresar/handlers/update_adresar.rs b/src/adresar/handlers/update_adresar.rs new file mode 100644 index 0000000..8e8e728 --- /dev/null +++ b/src/adresar/handlers/update_adresar.rs @@ -0,0 +1,73 @@ +// src/adresar/handlers/update_adresar.rs +use tonic::{Request, Response, Status}; +use sqlx::PgPool; +use crate::adresar::models::Adresar; +use crate::proto::multieko2::{UpdateAdresarRequest, AdresarResponse}; + +pub async fn update_adresar( + db_pool: &PgPool, + request: UpdateAdresarRequest, +) -> Result { + let adresar = sqlx::query_as!( + Adresar, + r#" + UPDATE adresar + SET + firma = $2, + kz = $3, + drc = $4, + ulica = $5, + psc = $6, + mesto = $7, + stat = $8, + banka = $9, + ucet = $10, + skladm = $11, + ico = $12, + kontakt = $13, + telefon = $14, + skladu = $15, + fax = $16 + WHERE id = $1 + RETURNING id, firma, kz, drc, ulica, psc, mesto, stat, banka, ucet, skladm, ico, kontakt, telefon, skladu, fax + "#, + request.id, + request.firma, + request.kz, + request.drc, + request.ulica, + request.psc, + request.mesto, + request.stat, + request.banka, + request.ucet, + request.skladm, + request.ico, + request.kontakt, + request.telefon, + request.skladu, + request.fax + ) + .fetch_one(db_pool) + .await + .map_err(|e| Status::internal(e.to_string()))?; + + Ok(AdresarResponse { + id: adresar.id, + firma: adresar.firma, + kz: adresar.kz.unwrap_or_default(), + drc: adresar.drc.unwrap_or_default(), + ulica: adresar.ulica.unwrap_or_default(), + psc: adresar.psc.unwrap_or_default(), + mesto: adresar.mesto.unwrap_or_default(), + stat: adresar.stat.unwrap_or_default(), + banka: adresar.banka.unwrap_or_default(), + ucet: adresar.ucet.unwrap_or_default(), + skladm: adresar.skladm.unwrap_or_default(), + ico: adresar.ico.unwrap_or_default(), + kontakt: adresar.kontakt.unwrap_or_default(), + telefon: adresar.telefon.unwrap_or_default(), + skladu: adresar.skladu.unwrap_or_default(), + fax: adresar.fax.unwrap_or_default(), + }) +} diff --git a/src/proto/descriptor.bin b/src/proto/descriptor.bin index dcd60860cbcd075bc1142fd66595b147b00201af..caba16bceff7d66355a9263260ac70818707fd25 100644 GIT binary patch literal 4815 zcmeH~SyLNF5XYsNk&tF}z#w1|7=&EdV9a3-$0zsYn3Rbtc}~f&u238z(vnK@8T}Rf zl9zmq{ClUjIpRuEdCn8lJM-(FY0YmX?59avY+atrU3S`W+ZE5R&f=5kw7uB8Z~OM5 zc;mPebz7bH(N9-VH+B`PPL9KDBRi$vW7PblY~{|9n$3MY>72KcRmJx{An^3JPysBy z$H?_secU+;b@G6Q4&2q*$x$mb$ul3&y36iSnDgr}q;==mN;}N^bxGiyHQl%shds%| zWK1hRv@T9tVZpCV0$O=>6vbiDucWaXwE6DoS?l;bw8>MBsQSrKI}DPCG<2cuIc;CW zt>pddgjJs%!{%pYtJ2QyW&5HV-EBFY z%JW=ns4CzD=F2hO>b zclzr)dAGmZMQ-=a{`xki?Uw9U+)AHa`rCWm-`|z3eSdk}iX-Xr7w`4|O}^l}`X8D+ zVT0{f+)7^=@C^-5UkAy!xnfIx3E%NaTfzJ1DC%~j;~#FUF3VF|zWC0T>F=Rm+U~ej z8*o6+-Qb+OzUJrwZ=pW)m*>9j;vZSt!#Bb0+VWN>y1p82_y%?Ry434mn&PwUT6_K8 zbfY&`UO!GZ_IG&>Z28tzb>lZu-J1Cq*}ncfZ1c`!Gv8+Ih|QLq&SqS_uYvx??Rk0s zTU)SM<+RQ?Ypu#>oXKT+vKZ@pChK&rFkk~~@)?zJIRWKrqS}6dW(4 zV+6Gn%K{4o!&J%a@j?ZxB-Iqn4b7x;z)DYdX!8cWsAl?-%^TWbwJ>a-T4R!4^qRir zbmO}pqsE)aL&9 z*5mYuROOB;{!w7 z61-a)f|YSc3&Q<}|6s!WQDQBwy zYvOFAvT|lJ^VADPH+Qn&H?QbD^uYKoB0#za>?a~De1L9{P>7K30sJHn73Fxy*8l;q zhrA0!G{@Hf5wM4R4HUg=rr1LSz@`MFlvC^>=73GHheRN~$Ul-*+{5m!APiOIU5PJEN81a zy&`9;0$UNR3T#ErRt2`g9%^TvW!`uX>E=EwjM`-grOCtR_)2~FPhY85$&Y#ef(M1V z&skVR$oQOvMTEM~Sy)YWz2FZX0k9XmT|_j;_XQEK7kpnd3Hy?TMF8xjV3hJD3yV2m zFIiYk!7Ek>0kBts(Xn4~b1+9MSs_irzLrgru&)IpVPDH8N!Zu2Ni1BIY9#EcU?l9S zR3l+mr5c1?lWHXFnqVaCnp7iU*Q6SRUFQ#8C&I1^M#8SMLYM=#&cbREc0;O>up5Gr zup3g1gx!#85Oz~A5_VHC5_VInk+7RAtX2?qi!U_-U|WKbuv>hoF$ZjmFSRCNx8-ak z?6zPe?6!20gxzLgH3_@J<{<#KBNz$0!{%WQ*bbYgN!VS%NZ4J$NZ4J$NZ4J$Ancx; zjfCA3jD+2jvyrfSayAINFJ~iR_XQ(i_vLIP>^=)?oOzr1#tTbV@NL2WSTH2)f$~2H z5Fp)wDkNW(h_LXW=zmfoLb?N(LEpnUXWr3&B>4Bj(A9ib@Nd{0r8`ukNdg2&cgX1w XVc}uX{|Z8cbcgkk5BcOjnWaAgYic^m literal 3380 zcmaKu+j8SX5QeRpu`G>zh{sN>I437;HfJYsvTP^<)D~My!3|W3d&-+Ag)0XKTc&_F z;W2m*UV+Epp1)^Coot}Eih8EM?&)9iE7pH>bv%3+^&ckVd~D*o*=;_`ZpMR+k96~^ zEPrz~$)>}}MfTGyo93pj#po&xdcn55z|+Q`Lf4@v&K*k#hQSmukD}BkDf79H)t0q(_tL%FXybAKv6? z)vgvH?c~{Qc0ImNYi`GfTz!_-pH!bw_3Pm;X~R{=g%L*Vza(Z%4hmIDV^A?uT#=$%?jLkDWB=A@n!ZK5x9zRhQ!B-_&(j<1(90 zv#TGTWY>6=(g)w_8vXswrH&`&bDj8r*3Cknoz#;P*gR{8cdTbnVMY zHq5hPVetvY_r*H2+x@RCKg&C9asD>7Z(4P%_zM!Ct8IiQ8F?VuXR@ACX7+V zBr-mc#z@))7640tVJL;6>ZLh*3Pr8z(W3rXD`kgjsOH8_@B1IK-q&w?{3lPsT%vY#_ey@)Ft*-&v2p=JZmeh-}+jXB#H^PAF!>rAIL(E<&k?EEcd zC#C@9TFMo7YP6C$TMiM*wOVbDp+;NTiGc;c+Kf^Cc2e^g&EKADdJNLctCrsqz~&hf zz~+;Bu?K9vX*`Btfe$HxEifj5E$|^FW%41Fksa=)fOQyCz&hMb0qbx#B&OW0Y@1h$yat0_aS5ZIz=`PnK)cDY*xSeLO1ur7D20PAwM z$jBw`76DsgECRN~-6CL1+$}b8S#|tDVqnXR#lV&m>m?jA2DaQTZizN>g}Z5BD~xGi zE3Bjjw$dzSON?AqsqdBmTV*T(wwe?-C;_%Q-|>>*BeBL<71$bMRbXq3Re`NBRx`54 zv(+-q1-0?Nj?-*#>h~8#>h~8?nZ{{;|G&_-7wUlzpFx!p$-`% zLmm3NialV5{;moELmlyKWT+#?$WTYDBpK?+`%nlN>ew3!0kC7n$WX`LP}l=@>, + ) -> Result, Status> { + let response = update_adresar(&self.db_pool, request.into_inner()).await?; + Ok(Response::new(response)) + } } pub async fn run_server(db_pool: sqlx::PgPool) -> Result<(), Box> { @@ -38,15 +46,14 @@ pub async fn run_server(db_pool: sqlx::PgPool) -> Result<(), Box