compiled without error
This commit is contained in:
@@ -62,7 +62,7 @@ message AdresarResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
message PutAdresarRequest {
|
message PutAdresarRequest {
|
||||||
int64 id = 1; // The ID of the Adresar entry to update
|
int64 id = 1;
|
||||||
string firma = 2;
|
string firma = 2;
|
||||||
string kz = 3;
|
string kz = 3;
|
||||||
string drc = 4;
|
string drc = 4;
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ use tonic::transport::Channel;
|
|||||||
use crate::proto::multieko2::{
|
use crate::proto::multieko2::{
|
||||||
adresar_client::AdresarClient,
|
adresar_client::AdresarClient,
|
||||||
Empty, CountResponse, PositionRequest,
|
Empty, CountResponse, PositionRequest,
|
||||||
AdresarResponse, PostAdresarRequest
|
AdresarResponse, PostAdresarRequest, PutAdresarRequest,
|
||||||
};
|
};
|
||||||
use crate::client::config::Config;
|
use crate::client::config::Config;
|
||||||
|
|
||||||
@@ -59,15 +59,6 @@ impl AppTerminal {
|
|||||||
form_data: &PostAdresarRequest,
|
form_data: &PostAdresarRequest,
|
||||||
) -> Result<(bool, String), Box<dyn std::error::Error>> {
|
) -> Result<(bool, String), Box<dyn std::error::Error>> {
|
||||||
match action {
|
match action {
|
||||||
"save" => {
|
|
||||||
// Send data to the server
|
|
||||||
let request = tonic::Request::new(form_data.clone());
|
|
||||||
let response = self.grpc_client.post_adresar(request).await?;
|
|
||||||
|
|
||||||
// form_state.has_unsaved_changes = false;
|
|
||||||
*is_saved = true;
|
|
||||||
Ok((false, format!("State saved. Response: {:?}", response)))
|
|
||||||
}
|
|
||||||
"quit" => {
|
"quit" => {
|
||||||
if *is_saved {
|
if *is_saved {
|
||||||
self.cleanup()?;
|
self.cleanup()?;
|
||||||
@@ -102,4 +93,21 @@ impl AppTerminal {
|
|||||||
let response: AdresarResponse = self.grpc_client.get_adresar_by_position(request).await?.into_inner();
|
let response: AdresarResponse = self.grpc_client.get_adresar_by_position(request).await?.into_inner();
|
||||||
Ok(response)
|
Ok(response)
|
||||||
}
|
}
|
||||||
|
pub async fn post_adresar(
|
||||||
|
&mut self,
|
||||||
|
request: PostAdresarRequest,
|
||||||
|
) -> Result<tonic::Response<AdresarResponse>, Box<dyn std::error::Error>> {
|
||||||
|
let request = tonic::Request::new(request);
|
||||||
|
let response = self.grpc_client.post_adresar(request).await?;
|
||||||
|
Ok(response)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn put_adresar(
|
||||||
|
&mut self,
|
||||||
|
request: PutAdresarRequest,
|
||||||
|
) -> Result<tonic::Response<AdresarResponse>, Box<dyn std::error::Error>> {
|
||||||
|
let request = tonic::Request::new(request);
|
||||||
|
let response = self.grpc_client.put_adresar(request).await?;
|
||||||
|
Ok(response)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
use crossterm::event::{Event, KeyCode, KeyModifiers};
|
use crossterm::event::{Event, KeyCode, KeyModifiers};
|
||||||
use crate::client::terminal::AppTerminal;
|
use crate::client::terminal::AppTerminal;
|
||||||
use crate::client::config::Config;
|
use crate::client::config::Config;
|
||||||
use crate::proto::multieko2::PostAdresarRequest;
|
use crate::proto::multieko2::{PostAdresarRequest, PutAdresarRequest};
|
||||||
use super::form::FormState;
|
use super::form::FormState;
|
||||||
|
|
||||||
pub struct EventHandler {
|
pub struct EventHandler {
|
||||||
@@ -60,7 +60,8 @@ impl EventHandler {
|
|||||||
*current_position = new_position;
|
*current_position = new_position;
|
||||||
match app_terminal.get_adresar_by_position(*current_position).await {
|
match app_terminal.get_adresar_by_position(*current_position).await {
|
||||||
Ok(response) => {
|
Ok(response) => {
|
||||||
// Update all form fields from the response
|
// Update all form fields
|
||||||
|
form_state.id = response.id;
|
||||||
form_state.firma = response.firma;
|
form_state.firma = response.firma;
|
||||||
form_state.kz = response.kz;
|
form_state.kz = response.kz;
|
||||||
form_state.drc = response.drc;
|
form_state.drc = response.drc;
|
||||||
@@ -77,7 +78,6 @@ impl EventHandler {
|
|||||||
form_state.skladu = response.skladu;
|
form_state.skladu = response.skladu;
|
||||||
form_state.fax = response.fax;
|
form_state.fax = response.fax;
|
||||||
|
|
||||||
// Reset form state
|
|
||||||
form_state.current_field = 0;
|
form_state.current_field = 0;
|
||||||
form_state.has_unsaved_changes = false;
|
form_state.has_unsaved_changes = false;
|
||||||
self.command_message = format!("Loaded entry {}", *current_position);
|
self.command_message = format!("Loaded entry {}", *current_position);
|
||||||
@@ -94,6 +94,7 @@ impl EventHandler {
|
|||||||
match app_terminal.get_adresar_by_position(*current_position).await {
|
match app_terminal.get_adresar_by_position(*current_position).await {
|
||||||
Ok(response) => {
|
Ok(response) => {
|
||||||
// Update all form fields
|
// Update all form fields
|
||||||
|
form_state.id = response.id;
|
||||||
form_state.firma = response.firma;
|
form_state.firma = response.firma;
|
||||||
form_state.kz = response.kz;
|
form_state.kz = response.kz;
|
||||||
form_state.drc = response.drc;
|
form_state.drc = response.drc;
|
||||||
@@ -183,21 +184,69 @@ impl EventHandler {
|
|||||||
let action = config.get_action_for_command(command)
|
let action = config.get_action_for_command(command)
|
||||||
.unwrap_or("unknown");
|
.unwrap_or("unknown");
|
||||||
|
|
||||||
|
if action == "save" {
|
||||||
|
let is_new = *current_position == total_count + 1;
|
||||||
|
|
||||||
|
let message = if is_new {
|
||||||
|
// POST new entry
|
||||||
|
let post_request = PostAdresarRequest {
|
||||||
|
firma: form_state.firma.clone(),
|
||||||
|
kz: form_state.kz.clone(),
|
||||||
|
drc: form_state.drc.clone(),
|
||||||
|
ulica: form_state.ulica.clone(),
|
||||||
|
psc: form_state.psc.clone(),
|
||||||
|
mesto: form_state.mesto.clone(),
|
||||||
|
stat: form_state.stat.clone(),
|
||||||
|
banka: form_state.banka.clone(),
|
||||||
|
ucet: form_state.ucet.clone(),
|
||||||
|
skladm: form_state.skladm.clone(),
|
||||||
|
ico: form_state.ico.clone(),
|
||||||
|
kontakt: form_state.kontakt.clone(),
|
||||||
|
telefon: form_state.telefon.clone(),
|
||||||
|
skladu: form_state.skladu.clone(),
|
||||||
|
fax: form_state.fax.clone(),
|
||||||
|
};
|
||||||
|
let response = app_terminal.post_adresar(post_request).await?;
|
||||||
|
// Update state
|
||||||
|
let new_total = app_terminal.get_adresar_count().await?;
|
||||||
|
*current_position = new_total;
|
||||||
|
form_state.id = response.into_inner().id;
|
||||||
|
"New entry created".to_string()
|
||||||
|
} else {
|
||||||
|
// PUT existing entry
|
||||||
|
let put_request = PutAdresarRequest {
|
||||||
|
id: form_state.id,
|
||||||
|
firma: form_state.firma.clone(),
|
||||||
|
kz: form_state.kz.clone(),
|
||||||
|
drc: form_state.drc.clone(),
|
||||||
|
ulica: form_state.ulica.clone(),
|
||||||
|
psc: form_state.psc.clone(),
|
||||||
|
mesto: form_state.mesto.clone(),
|
||||||
|
stat: form_state.stat.clone(),
|
||||||
|
banka: form_state.banka.clone(),
|
||||||
|
ucet: form_state.ucet.clone(),
|
||||||
|
skladm: form_state.skladm.clone(),
|
||||||
|
ico: form_state.ico.clone(),
|
||||||
|
kontakt: form_state.kontakt.clone(),
|
||||||
|
telefon: form_state.telefon.clone(),
|
||||||
|
skladu: form_state.skladu.clone(),
|
||||||
|
fax: form_state.fax.clone(),
|
||||||
|
};
|
||||||
|
let response = app_terminal.put_adresar(put_request).await?;
|
||||||
|
"Entry updated".to_string()
|
||||||
|
};
|
||||||
|
|
||||||
|
*is_saved = true;
|
||||||
|
form_state.has_unsaved_changes = false;
|
||||||
|
return Ok((false, message));
|
||||||
|
} else {
|
||||||
let (should_exit, message) = app_terminal
|
let (should_exit, message) = app_terminal
|
||||||
.handle_command(action, is_saved, &form_data)
|
.handle_command(action, is_saved, &form_data)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
self.command_message = message;
|
self.command_message = message;
|
||||||
self.command_mode = false;
|
|
||||||
self.command_input.clear();
|
|
||||||
|
|
||||||
if action == "save" && *is_saved {
|
|
||||||
*current_position = total_count + 1;
|
|
||||||
form_state.has_unsaved_changes = false; // Reset unsaved changes flag
|
|
||||||
}
|
|
||||||
|
|
||||||
return Ok((should_exit, self.command_message.clone()));
|
return Ok((should_exit, self.command_message.clone()));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
KeyCode::Char(c) => self.command_input.push(c),
|
KeyCode::Char(c) => self.command_input.push(c),
|
||||||
KeyCode::Backspace => {
|
KeyCode::Backspace => {
|
||||||
self.command_input.pop();
|
self.command_input.pop();
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ use ratatui::layout::Rect;
|
|||||||
use ratatui::Frame;
|
use ratatui::Frame;
|
||||||
|
|
||||||
pub struct FormState {
|
pub struct FormState {
|
||||||
|
pub id: i64,
|
||||||
|
|
||||||
pub firma: String,
|
pub firma: String,
|
||||||
pub kz: String,
|
pub kz: String,
|
||||||
pub drc: String,
|
pub drc: String,
|
||||||
@@ -30,6 +32,7 @@ pub struct FormState {
|
|||||||
impl FormState {
|
impl FormState {
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
FormState {
|
FormState {
|
||||||
|
id: 0,
|
||||||
firma: String::new(),
|
firma: String::new(),
|
||||||
kz: String::new(),
|
kz: String::new(),
|
||||||
drc: String::new(),
|
drc: String::new(),
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user