much better post request and a test written for this post request

This commit is contained in:
filipriec
2025-02-23 21:17:52 +01:00
parent d1be9c74ed
commit eb804f1007
2 changed files with 210 additions and 155 deletions

View File

@@ -4,13 +4,41 @@ use sqlx::PgPool;
use crate::adresar::models::Adresar;
use common::proto::multieko2::adresar::{PostAdresarRequest, AdresarResponse};
// Helper function to sanitize inputs
fn sanitize_input(input: &str) -> Option<String> {
let trimmed = input.trim().to_string();
if trimmed.is_empty() {
None
} else {
Some(trimmed)
}
}
pub async fn post_adresar(
db_pool: &PgPool,
request: PostAdresarRequest,
mut request: PostAdresarRequest,
) -> Result<AdresarResponse, Status> {
request.firma = request.firma.trim().to_string();
if request.firma.is_empty() {
return Err(Status::invalid_argument("Firma is required"));
return Err(Status::invalid_argument("Firma je povinne pole"));
}
// Sanitize optional fields
let kz = sanitize_input(&request.kz);
let drc = sanitize_input(&request.drc);
let ulica = sanitize_input(&request.ulica);
let psc = sanitize_input(&request.psc);
let mesto = sanitize_input(&request.mesto);
let stat = sanitize_input(&request.stat);
let banka = sanitize_input(&request.banka);
let ucet = sanitize_input(&request.ucet);
let skladm = sanitize_input(&request.skladm);
let ico = sanitize_input(&request.ico);
let kontakt = sanitize_input(&request.kontakt);
let telefon = sanitize_input(&request.telefon);
let skladu = sanitize_input(&request.skladu);
let fax = sanitize_input(&request.fax);
let adresar = sqlx::query_as!(
Adresar,
r#"
@@ -27,21 +55,21 @@ pub async fn post_adresar(
banka, ucet, skladm, ico, kontakt, telefon, skladu, fax
"#,
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,
false // Set deleted to false by default
kz,
drc,
ulica,
psc,
mesto,
stat,
banka,
ucet,
skladm,
ico,
kontakt,
telefon,
skladu,
fax,
false
)
.fetch_one(db_pool)
.await