use crate::ConfigEasyError;
pub type MenuActionCallback<'a> =
dyn Fn(&rusqlite::Connection) -> Result<(), Box<dyn std::error::Error + Send + Sync>> + 'a;
pub struct MenuAction<'a> {
pub(crate) key: String,
pub(crate) label: String,
pub(crate) callback: Box<MenuActionCallback<'a>>,
}
pub(crate) fn validate_action_key(key: &str) -> Result<(), ConfigEasyError> {
if key.is_empty() || key.chars().all(|ch| ch.is_ascii_digit()) {
return Err(ConfigEasyError::InvalidActionKey(key.to_string()));
}
if key == "q" || key == "quit" {
return Err(ConfigEasyError::ReservedActionKey(key.to_string()));
}
Ok(())
}
#[cfg(test)]
mod tests;