From e65b22d8635dc1a4dad228a60a01c77d16827c24 Mon Sep 17 00:00:00 2001 From: Priec Date: Sun, 9 Aug 2026 22:57:12 +0200 Subject: [PATCH] pgdump from rust for superadmin --- common/proto/backup.proto | 2 + common/src/proto/descriptor.bin | Bin 156984 -> 157182 bytes common/src/proto/komp_ac.backup.rs | 79 +++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+) diff --git a/common/proto/backup.proto b/common/proto/backup.proto index 181e44bc..23ea3dda 100644 --- a/common/proto/backup.proto +++ b/common/proto/backup.proto @@ -6,6 +6,7 @@ import "common.proto"; service BackupService { rpc StartBackup(StartBackupRequest) returns (BackupOperationResponse); rpc StartCheck(komp_ac.common.Empty) returns (BackupOperationResponse); + rpc StartDump(komp_ac.common.Empty) returns (BackupOperationResponse); rpc GetBackupInfo(komp_ac.common.Empty) returns (BackupInfoResponse); rpc GetOperationStatus(GetOperationStatusRequest) returns (BackupOperationResponse); } @@ -21,6 +22,7 @@ enum OperationKind { OPERATION_KIND_UNSPECIFIED = 0; OPERATION_KIND_BACKUP = 1; OPERATION_KIND_CHECK = 2; + OPERATION_KIND_DUMP = 3; } enum OperationStatus { diff --git a/common/src/proto/descriptor.bin b/common/src/proto/descriptor.bin index 457b8c20f4e988f9924509a7d86202f0e6b74b08..2c0fd2b6795a95b5d8a43b8b7edd58e1cdc238dc 100644 GIT binary patch delta 1544 zcmX|BO-~b16rFe9o1rt5(oVnW7j%#k+ER+NEQ|{iPze!;qFZ9(*2EZGnsLY8P5*;S zV}dcRbf^Epe_&j?!g%hRJKgo}bUp{l-Qj|2b7<@48<2X9`!nngAB z*Z-akywEt#{w%7iEwwm1sjI8_VUP`6&mmHw&UniyBB1Ij@oQt04hiI6d^9xY>5!mGF63A7KJII7-YF3O4#yqB@ZM|sgjtR3sJBz z7xD-SbD@T?03nxGp(#1_q&y#7azlHP;__u$LyOpTfxwliX-feiq1;&&C8)}r;*g3Q ztVlsvS!sw6ph^wN;PO?fq=>otiU?7@Mk_+a+`dL-f!w}UtK0SznufEQwCB8rTe1nn z?VA)?3jnC5ECL7t&9$xwLA9tOLN4EugYn!TY_;04D1q8`Ag)XHEw<&-K+MTJh+ki4 zej1nW$l5_c*umN{dV_b4spF?ws`Mm%h^R-9B9MC-O6-q zo*iyq@&J(6m%L=ueaQntULSc}!;Wl_Oo9P!H6Z(EW`z7fzGO=Q!8WMY#1>;_Lm3Aq z4d0LoqU2t~FqsB8_=cE9avZ>R@@jB^M$7GaOJ2&hpO+BL%A$QaP~synqO^&DEgsE% z{7o47X=wxBC@jixQ0|cZ93jNDXh9CZzfA97db~4mu4?2Mo5N9;{(6x(r(?Bs+v0zZKG0{&yUMO?X{Ba;bYs^U+9?*kA3~~ z@HEihlRw94?5t9^htHW_>GW`)>AT`xT2G@`5ou>?aXTOa>Rbk7fc9_FN|AE5u1+<+n@B-ZkD6>36^fKI4LV~@1b|wDvVh>%7*9M? zal#YoOG$g=0s`@*+Y=%{vm&yrNr6aQtBA%Grd2U{mR7|yV79>I^xE0B>X+%caXWIp zmFDmr%6$p|lsYsH2nL<$Oo%9Ts}g&3ecvLAG-)uq!;vrndNdLfPT!+mKwQg)J`*{c zsk1T@v$Ck;4Tv)h>B36@P#Vg5fnYGq&xMFmF`}t3In;=T0f9N1oCyt)Z#hJ)H%Wzsj(b!RvU6F>z_kT6HdV(b|$BKKp^G~ z|Jb;OUioP3{cxbUdf}I0d5(E4_jdk3i*hIn5IM7;nzt*@RVBojs#5Y%u9B9R6o#p7|8x+=I "OPERATION_KIND_UNSPECIFIED", Self::Backup => "OPERATION_KIND_BACKUP", Self::Check => "OPERATION_KIND_CHECK", + Self::Dump => "OPERATION_KIND_DUMP", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -90,6 +92,7 @@ impl OperationKind { "OPERATION_KIND_UNSPECIFIED" => Some(Self::Unspecified), "OPERATION_KIND_BACKUP" => Some(Self::Backup), "OPERATION_KIND_CHECK" => Some(Self::Check), + "OPERATION_KIND_DUMP" => Some(Self::Dump), _ => None, } } @@ -265,6 +268,30 @@ pub mod backup_service_client { .insert(GrpcMethod::new("komp_ac.backup.BackupService", "StartCheck")); self.inner.unary(req, path, codec).await } + pub async fn start_dump( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { + self.inner + .ready() + .await + .map_err(|e| { + tonic::Status::unknown( + format!("Service was not ready: {}", e.into()), + ) + })?; + let codec = tonic_prost::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/komp_ac.backup.BackupService/StartDump", + ); + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("komp_ac.backup.BackupService", "StartDump")); + self.inner.unary(req, path, codec).await + } pub async fn get_backup_info( &mut self, request: impl tonic::IntoRequest, @@ -346,6 +373,13 @@ pub mod backup_service_server { tonic::Response, tonic::Status, >; + async fn start_dump( + &self, + request: tonic::Request, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + >; async fn get_backup_info( &self, request: tonic::Request, @@ -527,6 +561,51 @@ pub mod backup_service_server { }; Box::pin(fut) } + "/komp_ac.backup.BackupService/StartDump" => { + #[allow(non_camel_case_types)] + struct StartDumpSvc(pub Arc); + impl< + T: BackupService, + > tonic::server::UnaryService + for StartDumpSvc { + type Response = super::BackupOperationResponse; + type Future = BoxFuture< + tonic::Response, + tonic::Status, + >; + fn call( + &mut self, + request: tonic::Request, + ) -> Self::Future { + let inner = Arc::clone(&self.0); + let fut = async move { + ::start_dump(&inner, request).await + }; + Box::pin(fut) + } + } + let accept_compression_encodings = self.accept_compression_encodings; + let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; + let inner = self.inner.clone(); + let fut = async move { + let method = StartDumpSvc(inner); + let codec = tonic_prost::ProstCodec::default(); + let mut grpc = tonic::server::Grpc::new(codec) + .apply_compression_config( + accept_compression_encodings, + send_compression_encodings, + ) + .apply_max_message_size_config( + max_decoding_message_size, + max_encoding_message_size, + ); + let res = grpc.unary(method, req).await; + Ok(res) + }; + Box::pin(fut) + } "/komp_ac.backup.BackupService/GetBackupInfo" => { #[allow(non_camel_case_types)] struct GetBackupInfoSvc(pub Arc);