64 lines
1.7 KiB
Rust
64 lines
1.7 KiB
Rust
// 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<AdresarResponse, Status> {
|
|
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(),
|
|
})
|
|
}
|
|
|