working put

This commit is contained in:
filipriec
2025-02-17 22:23:24 +01:00
parent 52746c0ec1
commit 103250d793
5 changed files with 110 additions and 8 deletions

View File

@@ -10,6 +10,7 @@ service DataProcessor {
service Adresar { service Adresar {
rpc CreateAdresar (AdresarRequest) returns (AdresarResponse); rpc CreateAdresar (AdresarRequest) returns (AdresarResponse);
rpc GetAdresar (GetAdresarRequest) returns (AdresarResponse); rpc GetAdresar (GetAdresarRequest) returns (AdresarResponse);
rpc UpdateAdresar (UpdateAdresarRequest) returns (AdresarResponse);
} }
message GetAdresarRequest { message GetAdresarRequest {
@@ -53,6 +54,25 @@ message AdresarResponse {
string fax = 16; 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 { message DataRequest {
string data = 1; string data = 1;
} }

View File

@@ -2,6 +2,8 @@
pub mod create_adresar; pub mod create_adresar;
pub mod get_adresar; pub mod get_adresar;
pub mod update_adresar;
pub use create_adresar::create_adresar; pub use create_adresar::create_adresar;
pub use get_adresar::get_adresar; pub use get_adresar::get_adresar;
pub use update_adresar::update_adresar;

View File

@@ -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<AdresarResponse, Status> {
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(),
})
}

Binary file not shown.

View File

@@ -1,12 +1,12 @@
// src/server/mod.rs // src/server/mod.rs
use tonic::{Request, Response, Status}; use tonic::{Request, Response, Status};
use tonic_reflection::server::Builder as ReflectionBuilder; // Import tonic-reflection use tonic_reflection::server::Builder as ReflectionBuilder;
use crate::db; use crate::db;
use crate::adresar::handlers::{create_adresar, get_adresar}; use crate::adresar::handlers::{create_adresar, get_adresar, update_adresar}; // Import the new handler
use crate::proto::multieko2::{ use crate::proto::multieko2::{
AdresarRequest, AdresarResponse, GetAdresarRequest, AdresarRequest, AdresarResponse, GetAdresarRequest, UpdateAdresarRequest,
adresar_server::{Adresar, AdresarServer}, adresar_server::{Adresar, AdresarServer},
FILE_DESCRIPTOR_SET, // Import the generated file descriptor set FILE_DESCRIPTOR_SET,
}; };
pub struct AdresarService { pub struct AdresarService {
@@ -30,6 +30,14 @@ impl Adresar for AdresarService {
let response = get_adresar(&self.db_pool, request.into_inner()).await?; let response = get_adresar(&self.db_pool, request.into_inner()).await?;
Ok(Response::new(response)) Ok(Response::new(response))
} }
async fn update_adresar(
&self,
request: Request<UpdateAdresarRequest>,
) -> Result<Response<AdresarResponse>, 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<dyn std::error::Error>> { pub async fn run_server(db_pool: sqlx::PgPool) -> Result<(), Box<dyn std::error::Error>> {
@@ -38,15 +46,14 @@ pub async fn run_server(db_pool: sqlx::PgPool) -> Result<(), Box<dyn std::error:
println!("Server listening on {}", addr); println!("Server listening on {}", addr);
// Enable reflection
let reflection_service = ReflectionBuilder::configure() let reflection_service = ReflectionBuilder::configure()
.register_encoded_file_descriptor_set(FILE_DESCRIPTOR_SET) // Register the file descriptor set .register_encoded_file_descriptor_set(FILE_DESCRIPTOR_SET)
.build() .build_v1()
.unwrap(); .unwrap();
tonic::transport::Server::builder() tonic::transport::Server::builder()
.add_service(AdresarServer::new(adresar_service)) .add_service(AdresarServer::new(adresar_service))
.add_service(reflection_service) // Add the reflection service .add_service(reflection_service)
.serve(addr) .serve(addr)
.await?; .await?;