// src/adresar/handlers/get_adresar.rs use tonic::Status; use sqlx::PgPool; use crate::adresar::models::Adresar; use common::proto::multieko2::adresar::{GetAdresarRequest, AdresarResponse}; pub async fn get_adresar( db_pool: &PgPool, request: GetAdresarRequest, ) -> Result { let adresar = sqlx::query_as!( Adresar, r#" SELECT id, deleted, firma, kz, drc, ulica, psc, mesto, stat, banka, ucet, skladm, ico, kontakt, telefon, skladu, fax FROM adresar WHERE id = $1 AND deleted = false "#, request.id ) .fetch_one(db_pool) .await .map_err(|e| match e { sqlx::Error::RowNotFound => Status::not_found("Record not found"), _ => Status::internal(format!("Database error: {}", e)), })?; 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(), }) }