From 4cea540caea48c6a98ae79ab62058f694d481ea9 Mon Sep 17 00:00:00 2001 From: filipriec Date: Mon, 17 Feb 2025 23:01:13 +0100 Subject: [PATCH] working delete now --- proto/api.proto | 9 ++ src/adresar/docs/example.txt | 156 +++++++++++++++++++++++++ src/adresar/handlers.rs | 2 + src/adresar/handlers/delete_adresar.rs | 25 ++++ src/proto/descriptor.bin | Bin 4812 -> 5290 bytes src/server/mod.rs | 11 +- 6 files changed, 202 insertions(+), 1 deletion(-) create mode 100644 src/adresar/docs/example.txt create mode 100644 src/adresar/handlers/delete_adresar.rs diff --git a/proto/api.proto b/proto/api.proto index d2ddc10..0ec6d99 100644 --- a/proto/api.proto +++ b/proto/api.proto @@ -11,12 +11,17 @@ service Adresar { rpc PostAdresar (PostAdresarRequest) returns (AdresarResponse); rpc GetAdresar (GetAdresarRequest) returns (AdresarResponse); rpc PutAdresar (PutAdresarRequest) returns (AdresarResponse); + rpc DeleteAdresar (DeleteAdresarRequest) returns (DeleteAdresarResponse); } message GetAdresarRequest { int64 id = 1; // The ID of the Adresar entry to retrieve } +message DeleteAdresarRequest { + int64 id = 1; // The ID of the Adresar entry to delete +} + message PostAdresarRequest { string firma = 1; string kz = 2; @@ -80,3 +85,7 @@ message DataRequest { message DataResponse { string processed_data = 1; } + +message DeleteAdresarResponse { + bool success = 1; // Indicates whether the deletion was successful +} diff --git a/src/adresar/docs/example.txt b/src/adresar/docs/example.txt new file mode 100644 index 0000000..60c4797 --- /dev/null +++ b/src/adresar/docs/example.txt @@ -0,0 +1,156 @@ +❯ grpcurl -plaintext -d '{"id": 1}' localhost:50051 multieko2.Adresar/GetAdresar +{ + "id": "1", + "firma": "Updated Firma", + "kz": "Updated KZ", + "drc": "Updated DRC", + "ulica": "Updated Ulica", + "psc": "Updated PSC", + "mesto": "Updated Mesto", + "stat": "Updated Stat", + "banka": "Updated Banka", + "ucet": "Updated Ucet", + "skladm": "Updated Skladm", + "ico": "Updated ICO", + "kontakt": "Updated Kontakt", + "telefon": "Updated Telefon", + "skladu": "Updated Skladu", + "fax": "Updated Fax" +} +❯ grpcurl -plaintext -d '{"id": 2}' localhost:50051 multieko2.Adresar/GetAdresar +{ + "id": "2", + "firma": "asdfasf", + "kz": " ", + "drc": " ", + "ulica": " ", + "psc": "sdfasdf", + "mesto": "asf", + "stat": "as", + "banka": "df", + "ucet": "asf", + "skladm": "f", + "ico": "f", + "kontakt": "f", + "telefon": "f", + "skladu": "f", + "fax": " " +} +❯ grpcurl -plaintext -d '{"id": 1}' localhost:50051 multieko2.Adresar/DeleteAdresar +{ + "success": true +} +❯ grpcurl -plaintext -d '{"id": 1}' localhost:50051 multieko2.Adresar/GetAdresar +ERROR: + Code: NotFound + Message: no rows returned by a query that expected to return at least one row +❯ grpcurl -plaintext -d '{"id": 2}' localhost:50051 multieko2.Adresar/GetAdresar +{ + "id": "2", + "firma": "asdfasf", + "kz": " ", + "drc": " ", + "ulica": " ", + "psc": "sdfasdf", + "mesto": "asf", + "stat": "as", + "banka": "df", + "ucet": "asf", + "skladm": "f", + "ico": "f", + "kontakt": "f", + "telefon": "f", + "skladu": "f", + "fax": " " +} + +❯ grpcurl -plaintext -d '{ + "firma": "New Firma", + "kz": "New KZ", + "drc": "New DRC", + "ulica": "New Ulica", + "psc": "New PSC", + "mesto": "New Mesto", + "stat": "New Stat", + "banka": "New Banka", + "ucet": "New Ucet", + "skladm": "New Skladm", + "ico": "New ICO", + "kontakt": "New Kontakt", + "telefon": "New Telefon", + "skladu": "New Skladu", + "fax": "New Fax" +}' localhost:50051 multieko2.Adresar/PostAdresar +{ + "id": "43", + "firma": "New Firma", + "kz": "New KZ", + "drc": "New DRC", + "ulica": "New Ulica", + "psc": "New PSC", + "mesto": "New Mesto", + "stat": "New Stat", + "banka": "New Banka", + "ucet": "New Ucet", + "skladm": "New Skladm", + "ico": "New ICO", + "kontakt": "New Kontakt", + "telefon": "New Telefon", + "skladu": "New Skladu", + "fax": "New Fax" +} +❯ grpcurl -plaintext -d '{ + "id": 43, + "firma": "Updated Firma", + "kz": "Updated KZ", + "drc": "Updated DRC", + "ulica": "Updated Ulica", + "psc": "Updated PSC", + "mesto": "Updated Mesto", + "stat": "Updated Stat", + "banka": "Updated Banka", + "ucet": "Updated Ucet", + "skladm": "Updated Skladm", + "ico": "Updated ICO", + "kontakt": "Updated Kontakt", + "telefon": "Updated Telefon", + "skladu": "Updated Skladu", + "fax": "Updated Fax" +}' localhost:50051 multieko2.Adresar/PutAdresar +{ + "id": "43", + "firma": "Updated Firma", + "kz": "Updated KZ", + "drc": "Updated DRC", + "ulica": "Updated Ulica", + "psc": "Updated PSC", + "mesto": "Updated Mesto", + "stat": "Updated Stat", + "banka": "Updated Banka", + "ucet": "Updated Ucet", + "skladm": "Updated Skladm", + "ico": "Updated ICO", + "kontakt": "Updated Kontakt", + "telefon": "Updated Telefon", + "skladu": "Updated Skladu", + "fax": "Updated Fax" +} +❯ grpcurl -plaintext -d '{"id": 43}' localhost:50051 multieko2.Adresar/GetAdresar +{ + "id": "43", + "firma": "Updated Firma", + "kz": "Updated KZ", + "drc": "Updated DRC", + "ulica": "Updated Ulica", + "psc": "Updated PSC", + "mesto": "Updated Mesto", + "stat": "Updated Stat", + "banka": "Updated Banka", + "ucet": "Updated Ucet", + "skladm": "Updated Skladm", + "ico": "Updated ICO", + "kontakt": "Updated Kontakt", + "telefon": "Updated Telefon", + "skladu": "Updated Skladu", + "fax": "Updated Fax" +} diff --git a/src/adresar/handlers.rs b/src/adresar/handlers.rs index d987fcf..294b352 100644 --- a/src/adresar/handlers.rs +++ b/src/adresar/handlers.rs @@ -3,7 +3,9 @@ pub mod post_adresar; pub mod get_adresar; pub mod put_adresar; +pub mod delete_adresar; pub use post_adresar::post_adresar; pub use get_adresar::get_adresar; pub use put_adresar::put_adresar; +pub use delete_adresar::delete_adresar; diff --git a/src/adresar/handlers/delete_adresar.rs b/src/adresar/handlers/delete_adresar.rs new file mode 100644 index 0000000..9fb996f --- /dev/null +++ b/src/adresar/handlers/delete_adresar.rs @@ -0,0 +1,25 @@ +// src/adresar/handlers/delete_adresar.rs +use tonic::{Request, Response, Status}; +use sqlx::PgPool; +use crate::proto::multieko2::{DeleteAdresarRequest, DeleteAdresarResponse}; + +pub async fn delete_adresar( + db_pool: &PgPool, + request: DeleteAdresarRequest, +) -> Result { + let rows_affected = sqlx::query!( + r#" + DELETE FROM adresar + WHERE id = $1 + "#, + request.id + ) + .execute(db_pool) + .await + .map_err(|e| Status::internal(e.to_string()))? + .rows_affected(); + + Ok(DeleteAdresarResponse { + success: rows_affected > 0, + }) +} diff --git a/src/proto/descriptor.bin b/src/proto/descriptor.bin index d79f660fe8cbb60a8adda26c9c7cda8a18778bdb..de2945fe7196bc009e373beb888752a710c01e71 100644 GIT binary patch literal 5290 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 R1tCJZR)YfIm7?} diff --git a/src/server/mod.rs b/src/server/mod.rs index c2024c0..07b20f5 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -2,9 +2,10 @@ use tonic::{Request, Response, Status}; use tonic_reflection::server::Builder as ReflectionBuilder; use crate::db; -use crate::adresar::handlers::{post_adresar, get_adresar, put_adresar}; // Import the new handler +use crate::adresar::handlers::{post_adresar, get_adresar, put_adresar, delete_adresar}; // Import the new handler use crate::proto::multieko2::{ PostAdresarRequest, AdresarResponse, GetAdresarRequest, PutAdresarRequest, + DeleteAdresarRequest, DeleteAdresarResponse, // Add these imports adresar_server::{Adresar, AdresarServer}, FILE_DESCRIPTOR_SET, }; @@ -38,6 +39,14 @@ impl Adresar for AdresarService { let response = put_adresar(&self.db_pool, request.into_inner()).await?; Ok(Response::new(response)) } + + async fn delete_adresar( + &self, + request: Request, + ) -> Result, Status> { + let response = delete_adresar(&self.db_pool, request.into_inner()).await?; + Ok(Response::new(response)) + } } pub async fn run_server(db_pool: sqlx::PgPool) -> Result<(), Box> {