From 449f1bd14efcc6c7b51fb6dacd0e55a708bd1d22 Mon Sep 17 00:00:00 2001 From: filipriec Date: Sat, 22 Feb 2025 13:09:13 +0100 Subject: [PATCH] splitting proto conf, still some errors, fixing --- build.rs | 7 ++- proto/adresar.proto | 30 ++--------- proto/common.proto | 6 +++ proto/table_structure.proto | 20 +++++++ proto/uctovnictvo.proto | 8 ++- .../handlers/get_adresar_by_position.rs | 3 +- src/adresar/handlers/get_adresar_count.rs | 2 +- src/lib.rs | 1 + src/proto/descriptor.bin | Bin 10313 -> 10644 bytes src/proto/mod.rs | 8 +++ src/server/mod.rs | 50 ++++++++++++------ src/table_structure/handlers.rs | 4 ++ .../handlers/table_structure.rs | 39 ++++++++++++++ src/table_structure/mod.rs | 3 ++ .../handlers/get_uctovnictvo_count.rs | 2 +- 15 files changed, 132 insertions(+), 51 deletions(-) create mode 100644 proto/common.proto create mode 100644 proto/table_structure.proto create mode 100644 src/table_structure/handlers.rs create mode 100644 src/table_structure/handlers/table_structure.rs create mode 100644 src/table_structure/mod.rs diff --git a/build.rs b/build.rs index 7a8b1eb..279bd55 100644 --- a/build.rs +++ b/build.rs @@ -4,7 +4,12 @@ fn main() -> Result<(), Box> { .build_server(true) .file_descriptor_set_path("src/proto/descriptor.bin") .compile_protos( - &["proto/adresar.proto", "proto/uctovnictvo.proto"], + &[ + "proto/common.proto", + "proto/adresar.proto", + "proto/uctovnictvo.proto", + "proto/table_structure.proto" + ], &["proto"], )?; Ok(()) diff --git a/proto/adresar.proto b/proto/adresar.proto index a2f41bb..91db0af 100644 --- a/proto/adresar.proto +++ b/proto/adresar.proto @@ -1,16 +1,17 @@ // proto/adresar.proto syntax = "proto3"; - package multieko2.adresar; +import "common.proto"; +import "table_structure.proto"; + service Adresar { rpc PostAdresar (PostAdresarRequest) returns (AdresarResponse); rpc GetAdresar (GetAdresarRequest) returns (AdresarResponse); rpc PutAdresar (PutAdresarRequest) returns (AdresarResponse); rpc DeleteAdresar (DeleteAdresarRequest) returns (DeleteAdresarResponse); - rpc GetAdresarCount (Empty) returns (CountResponse); - rpc GetAdresarByPosition (PositionRequest) returns (AdresarResponse); - rpc GetTableStructure (Empty) returns (TableStructureResponse); + rpc GetAdresarCount (common.Empty) returns (common.CountResponse); + rpc GetAdresarByPosition (common.PositionRequest) returns (AdresarResponse); } message GetAdresarRequest { @@ -80,24 +81,3 @@ message PutAdresarRequest { message DeleteAdresarResponse { bool success = 1; } - -message Empty {} - -message CountResponse { - int64 count = 1; -} - -message PositionRequest { - int64 position = 1; -} - -message TableStructureResponse { - repeated TableColumn columns = 1; -} - -message TableColumn { - string name = 1; - string data_type = 2; - bool is_nullable = 3; - bool is_primary_key = 4; -} diff --git a/proto/common.proto b/proto/common.proto new file mode 100644 index 0000000..e54271e --- /dev/null +++ b/proto/common.proto @@ -0,0 +1,6 @@ +syntax = "proto3"; +package multieko2.common; + +message Empty {} +message CountResponse { int64 count = 1; } +message PositionRequest { int64 position = 1; } diff --git a/proto/table_structure.proto b/proto/table_structure.proto new file mode 100644 index 0000000..21cbcb5 --- /dev/null +++ b/proto/table_structure.proto @@ -0,0 +1,20 @@ +syntax = "proto3"; +package multieko2.table_structure; + +import "common.proto"; + +message TableStructureResponse { + repeated TableColumn columns = 1; +} + +message TableColumn { + string name = 1; + string data_type = 2; + bool is_nullable = 3; + bool is_primary_key = 4; +} + +service TableStructureService { + rpc GetAdresarTableStructure (common.Empty) returns (TableStructureResponse); + rpc GetUctovnictvoTableStructure (common.Empty) returns (TableStructureResponse); +} diff --git a/proto/uctovnictvo.proto b/proto/uctovnictvo.proto index 0209b15..11f3f76 100644 --- a/proto/uctovnictvo.proto +++ b/proto/uctovnictvo.proto @@ -1,17 +1,15 @@ // proto/uctovnictvo.proto syntax = "proto3"; - package multieko2.uctovnictvo; -import "adresar.proto"; +import "common.proto"; service Uctovnictvo { rpc PostUctovnictvo (PostUctovnictvoRequest) returns (UctovnictvoResponse); rpc GetUctovnictvo (GetUctovnictvoRequest) returns (UctovnictvoResponse); - rpc GetUctovnictvoCount (multieko2.adresar.Empty) returns (multieko2.adresar.CountResponse); - rpc GetUctovnictvoByPosition (multieko2.adresar.PositionRequest) returns (UctovnictvoResponse); + rpc GetUctovnictvoCount (common.Empty) returns (common.CountResponse); + rpc GetUctovnictvoByPosition (common.PositionRequest) returns (UctovnictvoResponse); rpc PutUctovnictvo (PutUctovnictvoRequest) returns (UctovnictvoResponse); - rpc GetTableStructure (multieko2.adresar.Empty) returns (multieko2.adresar.TableStructureResponse); } message PostUctovnictvoRequest { diff --git a/src/adresar/handlers/get_adresar_by_position.rs b/src/adresar/handlers/get_adresar_by_position.rs index 2f9c824..5545566 100644 --- a/src/adresar/handlers/get_adresar_by_position.rs +++ b/src/adresar/handlers/get_adresar_by_position.rs @@ -1,7 +1,8 @@ // src/adresar/handlers/get_adresar_by_position.rs use tonic::{Status}; use sqlx::PgPool; -use crate::proto::multieko2::adresar::{PositionRequest, AdresarResponse, GetAdresarRequest}; +use crate::proto::multieko2::adresar::{AdresarResponse, GetAdresarRequest}; +use crate::proto::multieko2::common::PositionRequest; use super::get_adresar; pub async fn get_adresar_by_position( diff --git a/src/adresar/handlers/get_adresar_count.rs b/src/adresar/handlers/get_adresar_count.rs index 6f11802..14bace6 100644 --- a/src/adresar/handlers/get_adresar_count.rs +++ b/src/adresar/handlers/get_adresar_count.rs @@ -1,7 +1,7 @@ // src/adresar/handlers/get_adresar_count.rs use tonic::Status; use sqlx::PgPool; -use crate::proto::multieko2::adresar::{CountResponse, Empty}; +use crate::proto::multieko2::common::{CountResponse, Empty}; pub async fn get_adresar_count( db_pool: &PgPool, diff --git a/src/lib.rs b/src/lib.rs index 9b46fd6..cb6703b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,3 +6,4 @@ pub mod proto; pub mod adresar; pub mod uctovnictvo; pub mod shared; +pub mod table_structure; diff --git a/src/proto/descriptor.bin b/src/proto/descriptor.bin index 84b6f967a0d59e796290f5f8f32bf5413ba3af85..5a451104b6cdc4401ced7adffce1990ae9e59bf2 100644 GIT binary patch literal 10644 zcmeHN$#NUX5p8rgfJOlzh$cV+5El?!N8%=uBDL6~g<2_TM&c|n;RuHU0>K#!34kVm z32W~5(f$A*efJMI{0;Wi2ZzIFe}OL!zpTni030&LvgbIrPGr5xs_cB-S+Ak~>Z(+& z-E6j7Yo}-JZaW-p_D;Hu`f+=6&HP@8tLUTVY4=@aL8bTFy;k?2-Z^czI`uH8qBZ)V z5GhBNy#r%ZR#oOzyVK}4+O327FM9P(H!P{(lz-x}V(~ycOtkB()wpy`p#ATbA+ygyh#h_>~p=WbxwrFWpBVb^*Xlce;G_Y(U!H3zR*H+%fbSAgd z?*f(YR^Oh~-*mcXy;`?-R_7!a`$;}Gpfq$hDnC=>pVADU*a;-}_f)*rKIt`E9c0v7 zPHrx)T{`KSo?}lBKd`XMuOccr;0QzIx2ny$zCnoteH~s=iNk8Q`lkEtv|ey=mlFp8 z{qQO5a7HB?oj0xC$q6m7;K3ans7B`_{w17OBN%Xc)@WAG-n}`lzbp89Osdg&Wqy2K zf4BM1h{_Ld@{{`6H;r07JW_=x_3r({vwEj`HasMp7}zcsu&&b5^#MosT=s|OkX(MP zCK2beTDSd8t5NHI(;go8L&nck_uDyj6N!L+VQ zhpIB>nmUHzlcjW3!ivF4j#~?`*u=E8P@}Qgik>_Y`Uz*mOilz!1Y>;yDL2#*Lm=e_ z*1|xQNLvfjsnIOM;7Ym^?23RXNrBP)$%LIU0$4IX&M+`9B`_DTlpEtoh>5AVg}H#G z1O_ARmUy5CSXy8nVCi_?`eDrk@0f1G=PFMDL_gt7_&a4vazLPCKz22Y9TNqwLv3$wR*RZFeB+Y99OZ<@k#ZtSy1{{wkUd| z)-ELVk8~LpRQ$Nz>Q;}tg_Qo)n&jysZAa}^A#FTt%Iv+u$iVD9n*FHy%Rt7r z>^zM=SE~Q$3+FFD^xf|{Z@;20oVV|OpLyS^^iU$hr3;okG{Vll{QU#@o;+8X{-$-q zet82kGcYT6QNu0%&sDBJ*@JhuO}eoUXTJ-yKD*-o;{NUbt4Q5Y#5stl8QuIxoUoKH z>jrw=)`qqep9x&2WSb=48P}J1=|-Iy`+ARaOQT=!@gUQGy$AlDeT4%Opxfb>J>Jtn ze#u&RPY0X#`>*$ef8V~s0ZRnB8$nkaYf(s%djx8m>kv9nNwVGEXOdoO1|koU6)$glEA3hDSyz%H9F6Y(m2Ak-U`)y)simD17*)fhEYhQqvPj(jDT(F-HYG5shAD|g z_kT*FVc@hxi)zcJgsNd$qD29lmS{L#%=kH8e+;l0i53HFCYiB5z-B^orf}VO=#?c} z9I&#$;((PUS{$&lL<>T1R-y%f%?d04Y*wNLfXzy@MCes~a};si1Yi|`B><}=O`*aE zSS4qUA})GgZ%(2qz~%&|0GpFcD!}Hlc5lhhoA(R6?Id9H0!sompR^T}1Z+NUl?8|$ z3j#|4wji(+U<(3E0k$Bpbm%S0-qL_A3M>uSqUjhO)hur-0vZq|6u@X<(S zhUbD%>#|59)VjckQ0uZtBGkGp5(76R8WCzkU__`5iAIFlkZ2&(b%{oVx-Kvx)OCp# z1MIp)1EDtgetIquYExiDs7+=De1L5-GdvfB+LCBQs4amJp|&I%5o$}Kfl%85BSLKp zj0m+Y(TGsnIM0~d4MN@ETJ>Ba)D3|Vp>A-k!Uxz5u2s(kp>||%M5rBs5utV@lSHT; z=Aq|;P`gYh7=Y~xj0m;Mgn|#ST_%+0f>1XFMufU4Fe21Vff1o@3Jiq0C3_=6-4YlP z>Xz({2z5*LmI=MvvbPLiw*{5~?6&MJ1K4fmp&$A`bv`mYq!Roozjl4%;fKsa7?|!u z<{>N${E&GF3)6kbJoJe)clmz80PHTW0v7qW3}69vm&*Vzv(UT8JcI$*J%Q1b_n3$9 z0d|jh=#z1unE?Z^`vM~#-se5TMiqd<&>OHa0=pZ#&hmSkp5`IH?l&^ie--bdIgE*Z(2Rt61#~HrHc) zFIvMsdL$|~4_V#A6$u!P!+NXRIAV3rn&z|8w=Jy(8es~bm5fabGJ=|s`HWHdqpQY- zl68q3H=I4vXGA>C-k)5Rhwd?yK=Xm`yx8_*{kiS@A>8=mC<6|5Tio8iE= z-cPi8pS6FjMuypNX`Y6M{SSHC|HqgS%6<}2b0U-#StuL4|L4TA=|QoKKY+!YlzxF} zg)C-1`k4=4aewdwSX@*j`T!O$uG4{z2I2)4zdi5)ED+6#TE`&JpB`Bu3kv$vIaz=O zH?3xc8590K&q%FfBDi8L@=bkUEx;1nPw6~?Nnj}d3wBZKsDiS!08^El)}oPnpEC@N zWM5dL)-frIB!w&~i=;*}iAB=c7gE=VQ!?**dWDY+etgaNMT*2yS7u1+$|xg`m{esZ z3i>dF4B&gCz^LaQ<&Fa`@+B>dQZ))#O$%#SVAju9J}-aPsh9CSZM42DAGOcQoksH% z-_{!4cPnL>J$S!tx4%5$e;K^(9j$%Zps#Ax=BWm}t#`ZivohZ8_3~HM*5L_evLB79 zm(R*_XsKE5Kpox7XSoB_w;+^VP%j?}jBZFMyP#e^l+EK7jB$VDxYWy!35;&Ym_(yn zFecG3FelNdm(K}|`mdZsqh3BI(a_81eftTVdilJ-sF%-kPw2SR%ja|EpCb;5RO5WS zfdSaKz^IoW=i?20fQ|F<#-Uz*f;&(cfK3RDdie=%T;T(3g1=xpE_(Tb?2UT)g21Sk zFC>kEh=G6=#%&p)moLiRsF$}=rsGmCZ>3CFfECB`R%o4cJ}|{h#Wo4LiO@PVB(zQq z39aAv23ELMBQ6!4RS#hS zR^eKO1z1I*q3Gr$8Wo*Y4LDz^7P(eo0k+78tOy+-mt=2LbXGlt z3$P`wRak&6ajiz^0J$uCqXXnJmpEL2ElVcp0J+Sy3KjpFbJNr+6~#3^WN8(Dg=^KQ z_$yp=M#W#@S~V*E3fHPGtW{pTQSny=Mzy-iwQ5xSRlYG=#a|N`)v8qw;R0-p?s!$7MZLXgqcpo(wR zL-+u*>Y?kRRyQRY)v8qw;X<@ciAJ@$DbY}?TYNtu=>ulfLs)=qajn7vY>R8vrCQzQ zT7?0aRS#hSw#~H)3$SgjRfzMX7g}ANYSpTTZ~=CMYt^XuH@H@{ioYX!qgu7mQhmuhua_C~d8)kC-d+vQq?1=udvD&Bs#9du^SoMnm9`ACho*8MNtl;3ssTK z)OqSl|DlhW>3e^m(|_m>bovARh^`H6Y>5ipjMM2`-na-XY+z%pbAWyHk1IM?-9D;D${!CLA|}J9SreBAR?P8*wI2Uc=S7lD; z@7DL~?fTF3`$wqF^JeSxaCx2FX&miW?TDF82Pnwy55*8cGMo5i26eQ3R4YdI5Bh1q z>+CgZ)uOWhIY9jmTeV`+^}|oZ636%yX|71{ntZkX(Mer z&4XgjwJ?;?JH`GJqjzZZo$4Qo18#Kuto$?71CsUDVe_C>KfOJ)DwkiE%&z>pbe_ns z%Vl?dT`s%x>vBn{KF+U8rAxNt*QN4QeqAbEvL(MRlQ!3qfqhQpsrN7%=BO!H-F%`$7bv~?s4;njJu_CT^cm=J*M2%!;gOM=R2}ApXq_) zMO)RHVh^$vcB$N>rCaH*b^ds`+wZ)-O|R|ojegR-`kdavuk4Gz+Xw$;!V5hn+)ef- zdi>*rP8pR5b`pA0C;Cj32u!I^wnvba>d6C%*0D~6CW?ZR);dfDMkRw>0>7hFkT6j) z9?)5>Qb8D)D5dV`KAj|hrc^xa5e7&V<~@plRyUZ2j%l^QO$kD=@d&hZe%2$<(id+r z4NbAoLeOHNh14dr5VTlm02%d+M~pzr#08H)%Z#4)hwX`-xp#7#-ivhf*@K+8@nc?4Q^{Q=WbChC(+ra<@s0jZt=E2GtNz2w+ZwD&rA44&pbrVYtD8K|5T+sNtaChNE2> z#>{EB1nqO4hXcTHc^(c39rHXK5QfY1aG_D7!Mq!ec55^)+2KMOuBhxDC;$vsRNBr5 z2px-AnqQLIFkEps&onfRDJv8-B|sY!8claBn`2r6w6Vbqz_?5@0&QGqB%*PdWJEn>l90_AiKak1BQz4x8HuJqJ0sE1@vKBkTI5qg zB04M4lAxWHXpqf>qV!X?QlL#pG!oH7cEGoRHerT&ZD|utO0+a+lR`^_HYw54piN4& z*hFQC7K2t6S`1oQqQ#(?~;0Ld$|So%IUJf;L?ky&Iqj!v>BoGfi@$wKG0@_ zmNU_;tStxHtk80x&C1$xpv}tK`b{(^YwHJXPH6q0&B@yOL7T(c$nKF*3&BUuP$awxXlOdmGKj39&hspQsEuU+1loC)K}65m z3+zJxM7tm~GSmh3A=*H@z&?x!EU_~HKwAphFTUH8ERQ3 zNrqaMNuuM5L?c732#pN2BGJfDD-sQcx+u}eP#1+phPo)xQlMRwXfV_z-p?o`LtPRY z8R`-{18tyPVrN7l47DoJ$WW_7BSWo9G&0nxM1!F&3ylnQS!iUa%My(Ybs5(rx7{$* z71nALlA*2$jSO{#wTd>-uCP|45Qe%cYa>Hl6&e}ps$`N3b(MV>g)r0_8wvolHKCEA z*4R*J18t2B6@@U=HKCEAt_h6{bxmkwsB1!lq1I(>WT_fDHc8h(e2zaR_2FHikq_^(GtdUwUG||OAKsH_jZrZ39!Eam?($EXs9_V?R zrYJ9Y(g29^lHCr3jxV)4d;uZKONfnL;;~U*2fua0k+#0(mv~IWz2ejXV7OO291uFb z((d2_gyCKlM(l7IqrM5=xZy~1-^3Gkb{QJ(wXzo}1pxQHR_+u4gr&aDxibjRrw>w(8rop#(=>VAP7Vj4jI&QJ@fiT<_`%KeQsiy3` z24m2Jt|l~k(ABc;D2q1GYNJJth6mlY(C9(8&D*JQ4*<$|8a>;#g$7Vp_VR^j^q{K? zjUIIMj60K}je3^Gw^H^pd|CfxN)Mp~)%^aTQEPwSs7ZD9xe)JwqwJu@-8ph~ zr_5$tyYDbjnp>^vw_KBVz?{*UR{N;F-DvIl%KY&krl3=`H&lJ&`h2p6b#$n-y}!-X zdHkXhZ)3ZD&~EH-b>2f`3w%Eu*lNBjETh2ZFipr6#9f)*fy&=PJ=~S7_mtDSvqv@c zX!Cv9i)xE5aclKP}y=V6LL&nMMx!U`w?70;6%$`e9 zkLjj#GP&~i8H z_LPJS4+dx4DTxk0gM0+DRoEdux40_o5TEFP&~Zq+a|;lL8{%_|&9D&~ostZnlF$U2 z;ZqV2Xa=+z&SU{y2ZvRm^0NG*RWIWm-#B<%-f13{TaEoge6Me`-(4sJcF_8^*?hZK zcjua|&d&0e4f;4=-9NO1t$Mp%KPuxTSucNEJ=osENUj)(AehduOo#Sym@h|Y!*quE zaug8A%PQ#fl@}WAV_sH4JC~QmW9JHdbPqzhW)_4-`&f`@v~vZChK?f=jjov^LZf{g zk!WFRzjbCODpbfJq^Ts4d%u_-m(fOJ&nn0W4{R9GSN@xHT zR!_nn`F+h82(${T2Z(yIdJ>5qLJu)%{UQ~=w>7u ziEc)sL3FbcjYQ{b#)*(bH!IOdbh8o-qMPIWOjyzRnlTV)bF5V$(B@dH2@>5rYZU;| z=2_xEpv|*Zfk2yQttLox=lK2)0NOdBk?78`R?!C9IlliVNOTLbHWJ-}&`5L(tW|Ub zZGp9#pxVZwtc_|Li$bH?#-e1BY8#8JReWGt^7U{M#S-8D?FXi1)~fr!w9KM&ADEU| ztL_8SGHcZeYlSE8J}|8ajkLPLT16XXvBDdJZ%R}pcDGvhfyvj5fk3;+`w0ZvMWF#) zV)dW}YxXr`AkZ%Hnt`Y%t0yF_u1Yl0s;?QN3A9y-Mp|8!Xz1u`#(0QZbn*k!Wr;>w zy)4n7)hiN>wCZcd_}qkOS0ox~^@>D;R#{b|s;?QN3AAUCKgY1P+^(FEFc$s}p@I%^g0@EZXRb5u&9-MztDwcl=h&Dedr@ik-j?Z(%P M-M1UmjD3~jKd`R7xc~qF diff --git a/src/proto/mod.rs b/src/proto/mod.rs index a76de70..c222846 100644 --- a/src/proto/mod.rs +++ b/src/proto/mod.rs @@ -10,5 +10,13 @@ pub mod multieko2 { tonic::include_proto!("multieko2.uctovnictvo"); } + pub mod common { + tonic::include_proto!("multieko2.common"); + } + + pub mod table_structure { + tonic::include_proto!("multieko2.table_structure"); + } + pub const FILE_DESCRIPTOR_SET: &[u8] = include_bytes!("descriptor.bin"); } diff --git a/src/server/mod.rs b/src/server/mod.rs index d3170ca..1c7fc0d 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -1,26 +1,36 @@ // src/server/mod.rs +use crate::table_structure::handlers; use tonic::{Request, Response, Status}; 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 + post_adresar, get_adresar, put_adresar, delete_adresar, get_adresar_count, get_adresar_by_position, }; use crate::uctovnictvo::handlers::{ post_uctovnictvo, get_uctovnictvo, get_uctovnictvo_count, get_uctovnictvo_by_position, - put_uctovnictvo, get_table_structure as get_uctovnictvo_table_structure, + put_uctovnictvo, }; use crate::proto::multieko2::{ + common::{Empty, CountResponse, PositionRequest}, + table_structure::{TableStructureResponse, TableColumn}, FILE_DESCRIPTOR_SET, }; use crate::proto::multieko2::adresar::{ adresar_server::{Adresar, AdresarServer}, PostAdresarRequest, AdresarResponse, GetAdresarRequest, PutAdresarRequest, - DeleteAdresarRequest, DeleteAdresarResponse, PositionRequest, CountResponse, Empty, - TableStructureResponse, + DeleteAdresarRequest, DeleteAdresarResponse, }; use crate::proto::multieko2::uctovnictvo::{ uctovnictvo_server::{Uctovnictvo, UctovnictvoServer}, PostUctovnictvoRequest, UctovnictvoResponse, GetUctovnictvoRequest, PutUctovnictvoRequest, }; +use crate::proto::multieko2::table_structure::{ + table_structure_service_server::{TableStructureService, TableStructureServiceServer}, + TableStructureResponse +}; +use crate::proto::multieko2::{ + common::{Empty, CountResponse, PositionRequest}, + table_structure::{TableStructureResponse, TableColumn} +}; pub struct AdresarService { db_pool: sqlx::PgPool, @@ -30,6 +40,10 @@ pub struct UctovnictvoService { db_pool: sqlx::PgPool, } +pub struct TableStructureHandler { + db_pool: sqlx::PgPool +} + #[tonic::async_trait] impl Adresar for AdresarService { async fn post_adresar( @@ -79,14 +93,6 @@ impl Adresar for AdresarService { let response = get_adresar_by_position(&self.db_pool, request.into_inner()).await?; Ok(Response::new(response)) } - - async fn get_table_structure( - &self, - request: Request, - ) -> Result, Status> { - let response = get_table_structure(&self.db_pool, request.into_inner()).await?; - Ok(Response::new(response)) - } } #[tonic::async_trait] @@ -99,7 +105,6 @@ impl Uctovnictvo for UctovnictvoService { Ok(Response::new(response)) } - // Add this method async fn get_uctovnictvo( &self, request: Request, @@ -131,13 +136,22 @@ impl Uctovnictvo for UctovnictvoService { let response = put_uctovnictvo(&self.db_pool, request.into_inner()).await?; Ok(Response::new(response)) } +} - async fn get_table_structure( +#[tonic::async_trait] +impl TableStructureService for TableStructureHandler { + async fn get_adresar_table_structure( &self, - request: Request, + request: Request, ) -> Result, Status> { - let response = get_uctovnictvo_table_structure(&self.db_pool, request.into_inner()).await?; - Ok(Response::new(response)) + handlers::get_adresar_table_structure(&self.db_pool, request.into_inner()).await + } + + async fn get_uctovnictvo_table_structure( + &self, + request: Request, + ) -> Result, Status> { + handlers::get_uctovnictvo_table_structure(&self.db_pool, request.into_inner()).await } } @@ -145,6 +159,7 @@ pub async fn run_server(db_pool: sqlx::PgPool) -> Result<(), Box Result<(), Box Result { + let columns = vec![ + TableColumn { + name: "firma".to_string(), + data_type: "TEXT".to_string(), + is_nullable: false, + is_primary_key: false, + }, + // ... other columns from original adresar handler + ]; + Ok(TableStructureResponse { columns }) +} + +pub async fn get_uctovnictvo_table_structure( + _db_pool: &PgPool, + _request: Empty, +) -> Result { + let columns = vec![ + TableColumn { + name: "adresar_id".to_string(), + data_type: "BIGINT".to_string(), + is_nullable: false, + is_primary_key: false, + }, + // ... other columns from original uctovnictvo handler + ]; + Ok(TableStructureResponse { columns }) +} diff --git a/src/table_structure/mod.rs b/src/table_structure/mod.rs new file mode 100644 index 0000000..b6c37d9 --- /dev/null +++ b/src/table_structure/mod.rs @@ -0,0 +1,3 @@ +// src/table_structure/mod.rs + +pub mod handlers; diff --git a/src/uctovnictvo/handlers/get_uctovnictvo_count.rs b/src/uctovnictvo/handlers/get_uctovnictvo_count.rs index 1c72321..a4e5607 100644 --- a/src/uctovnictvo/handlers/get_uctovnictvo_count.rs +++ b/src/uctovnictvo/handlers/get_uctovnictvo_count.rs @@ -1,7 +1,7 @@ // src/uctovnictvo/handlers/get_uctovnictvo_count.rs use tonic::Status; use sqlx::PgPool; -use crate::proto::multieko2::adresar::{CountResponse, Empty}; +use crate::proto::multieko2::common::{CountResponse, Empty}; pub async fn get_uctovnictvo_count( db_pool: &PgPool,