From 4a2b5d0c12d04b91a7274851be5c2530e6fc76c1 Mon Sep 17 00:00:00 2001 From: filipriec Date: Fri, 21 Feb 2025 22:41:46 +0100 Subject: [PATCH] get count --- proto/uctovnictvo.proto | 1 + src/proto/descriptor.bin | Bin 8700 -> 8838 bytes src/server/mod.rs | 10 +++++++- src/uctovnictvo/handlers.rs | 7 +++--- .../handlers/get_uctovnictvo_count.rs | 23 ++++++++++++++++++ 5 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 src/uctovnictvo/handlers/get_uctovnictvo_count.rs diff --git a/proto/uctovnictvo.proto b/proto/uctovnictvo.proto index 816a642..af97e17 100644 --- a/proto/uctovnictvo.proto +++ b/proto/uctovnictvo.proto @@ -8,6 +8,7 @@ import "adresar.proto"; service Uctovnictvo { rpc PostUctovnictvo (PostUctovnictvoRequest) returns (UctovnictvoResponse); rpc GetUctovnictvo (GetUctovnictvoRequest) returns (UctovnictvoResponse); + rpc GetUctovnictvoCount (multieko2.adresar.Empty) returns (multieko2.adresar.CountResponse); } message PostUctovnictvoRequest { diff --git a/src/proto/descriptor.bin b/src/proto/descriptor.bin index b5d6e25e65e2536609c5f86af6e3869c6912e9a4..d601206785ac5f9841f68bee40b1df039ad1efe4 100644 GIT binary patch delta 1523 zcmX|=yN(k<5JjgSw#PkqJ??pV@%xR|n?a5cT7k$2ND;!?03l(7tPK!oGJe3nfQUh4 zNW|oP0U19*z^!pjWxlFDeY>ZR|2_P4_4RY1|77346u-6pp^xux|MmWVj^hnxNJW9xx?@~h*T-m2j8_Y!y3!uB;^)_p0pUW^aL}&deUNOr5w(B z<88(}T3}u<3(QAxSr5T^sl&=d>Kaw5FVz5-NL>S1B6Uq~Qk(ORO<<|iHG!p3ubu%* z(+rm@>D#xw$*kvD3tT2#3tSd;>KV8!?(s(ny~%CCqYzjwSO_eS>McWHd6qNQ_NI`_ zm2Gf^aBXl!l<=Nya7A9fwDYDfw{yVyf;nJ)c{&HIpJbJA%G*J3=Oi5YFo2{aoFd_d zws-peNZ4=4#vx(l5QiWek+9#e8#9N|h>x!{2{#gq3Pvm{X23@LHj4f(W5G1AadrBV z3dp=MzbO*9v2X|zR!C_wZ^E}m0yg1WBhgAWNNJcil{zwSDj1nJt=md%!A+$OD`!$i z=FNm7^JY><=FOxI=FO#!%$o~F=FRIm-2^t5ww5o=g5OkWGH)RqnYUnLF$1@#jHS1O zc}o@+0oYP7GH=PkVg_ur25!a1B7s|F1wT2=Tg&apytUMk zd21F{X)ogxD6Yty}bx7PsWlM7vZQnh9+aT_VgD< bzOODe(5Qg24I8Hl>?e;6gao!1<%#tIZ5faB>#Ci~7g^;{sjg%`O)=2C*1PiV( zmtetPPPvw)s;~ckeD>Fef3JUjul3*J*N^&-*3attdHL+#ew(?_TNT`2e>V@xUG3^i z=bW~Ix6@#uoO8wo%A0AlcCoWI(1ABI`@&7#h>8(alcB=k%oRgrP}K{@(3%UTfX%Jr zK}EfIz*Giq4(_p!)7~W4H|_f_k$H{zBu<&u7*FzoV^E|LV-S-HW`Ly`h@k_r~A~;l|*KcsBIF6=}wo5_wbFnp+XDQm_bE84pWFz{;{>Y~oENhwCQb zD&Z#JsyOF0C*Z1TcxvZOEvIw9YQY?^TAt1UtMd|)Y23111}|^Ikr2zM>9?UsxW;C; z`$vWK8a56UCL3&mY($0inj~cotrc%yX)BSM+ejRlw-JoY+YD))w%|4rhsmwPk$GF; z$h@t@k$GE*gLylNBlC8Gk$JlzPKUsDk~a38+4Gw!P3G-|BlGrbEPCMfy|ES-2J;Rq zEDB%;!N|M=3yU7G0}HD(%sbizzbc7$wD>FC9+}KLvay&1cPwjua+r6L(~)^6i6iq) zEUeOG-id`(I`-x)hl_!o1&e{5=`J68!(wn}HdcFk7u?^BB{A-zw%>*(V=wmh38TPz a7d8(S1}`iuDlB(N(s$v9k58YTUi}BWOi3F6 diff --git a/src/server/mod.rs b/src/server/mod.rs index 7dc92d2..411628d 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -4,7 +4,7 @@ use tonic_reflection::server::Builder as ReflectionBuilder; use crate::adresar::handlers::{ post_adresar, get_adresar, put_adresar, delete_adresar, get_adresar_count, get_adresar_by_position, get_table_structure }; -use crate::uctovnictvo::handlers::{post_uctovnictvo, get_uctovnictvo}; // Update this line +use crate::uctovnictvo::handlers::{post_uctovnictvo, get_uctovnictvo, get_uctovnictvo_count}; use crate::proto::multieko2::{ FILE_DESCRIPTOR_SET, }; @@ -104,6 +104,14 @@ impl Uctovnictvo for UctovnictvoService { let response = get_uctovnictvo(&self.db_pool, request.into_inner()).await?; Ok(Response::new(response)) } + + async fn get_uctovnictvo_count( + &self, + request: Request, + ) -> Result, Status> { + let response = get_uctovnictvo_count(&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/handlers.rs b/src/uctovnictvo/handlers.rs index 807ed00..b978290 100644 --- a/src/uctovnictvo/handlers.rs +++ b/src/uctovnictvo/handlers.rs @@ -1,7 +1,8 @@ // src/uctovnictvo/handlers.rs - pub mod post_uctovnictvo; -pub mod get_uctovnictvo; // Add this line +pub mod get_uctovnictvo; +pub mod get_uctovnictvo_count; // Add this line pub use post_uctovnictvo::post_uctovnictvo; -pub use get_uctovnictvo::get_uctovnictvo; // Add this line +pub use get_uctovnictvo::get_uctovnictvo; +pub use get_uctovnictvo_count::get_uctovnictvo_count; // Add this line diff --git a/src/uctovnictvo/handlers/get_uctovnictvo_count.rs b/src/uctovnictvo/handlers/get_uctovnictvo_count.rs new file mode 100644 index 0000000..1c72321 --- /dev/null +++ b/src/uctovnictvo/handlers/get_uctovnictvo_count.rs @@ -0,0 +1,23 @@ +// src/uctovnictvo/handlers/get_uctovnictvo_count.rs +use tonic::Status; +use sqlx::PgPool; +use crate::proto::multieko2::adresar::{CountResponse, Empty}; + +pub async fn get_uctovnictvo_count( + db_pool: &PgPool, + _request: Empty, +) -> Result { + let count: i64 = sqlx::query_scalar!( + r#" + SELECT COUNT(*) AS count + FROM uctovnictvo + WHERE deleted = FALSE + "# + ) + .fetch_one(db_pool) + .await + .map_err(|e| Status::internal(e.to_string()))? + .unwrap_or(0); + + Ok(CountResponse { count }) +}