nxtgauge-ai-assistant/src/services/action_confirmation.rs

53 lines
1.5 KiB
Rust
Raw Normal View History

use crate::{
actions::get_action,
error::AppError,
2026-07-02 06:51:03 +05:30
handlers::actions::{ConfirmActionRequest, ConfirmActionResponse},
};
2026-07-02 06:51:03 +05:30
#[derive(Clone, Default)]
pub struct ActionConfirmationService;
impl ActionConfirmationService {
2026-07-02 06:51:03 +05:30
pub fn new() -> Self {
Self
}
pub async fn confirm_action(
&self,
request: ConfirmActionRequest,
) -> Result<ConfirmActionResponse, AppError> {
if !request.confirmed {
return Ok(ConfirmActionResponse {
success: false,
2026-07-02 06:51:03 +05:30
delegated: false,
message: "Action cancelled by user.".to_string(),
action: request.action.clone(),
2026-07-02 06:51:03 +05:30
backend_handler: None,
record_id: None,
2026-07-02 06:51:03 +05:30
fields: None,
ui_events: None,
});
}
2026-07-02 06:51:03 +05:30
let action = get_action(&request.action);
let backend_handler = action
.as_ref()
.map(|item| item.backend_handler.clone())
.unwrap_or_else(|| request.action.clone());
Ok(ConfirmActionResponse {
success: true,
2026-07-02 06:51:03 +05:30
delegated: true,
message: format!(
"Action approved. Execute '{}' in the product backend.",
backend_handler
),
action: request.action.clone(),
2026-07-02 06:51:03 +05:30
backend_handler: Some(backend_handler),
record_id: None,
2026-07-02 06:51:03 +05:30
fields: Some(request.fields),
ui_events: None,
})
}
}