Lines
0 %
Functions
use crate::core::{
protocol::{
CreateDatabaseError, CreateUserError, DropDatabaseError, DropUserError,
ListPrivilegesError, ListUsersError, request_validation::ValidationError,
},
types::DbOrUser,
};
pub fn name_validation_error_to_error_message(db_or_user: &DbOrUser) -> String {
let argv0 = std::env::args().next().unwrap_or_else(|| match db_or_user {
DbOrUser::Database(_) => "mysql-dbadm".to_string(),
DbOrUser::User(_) => "mysql-useradm".to_string(),
});
format!(
concat!(
"{}: {} name '{}' contains invalid characters.\n",
"Only A-Z, a-z, 0-9, _ (underscore) and - (dash) permitted. Skipping.",
),
argv0,
db_or_user.capitalized_noun(),
db_or_user.name(),
)
}
pub fn authorization_error_message(db_or_user: &DbOrUser) -> String {
"You are not in charge of mysql-{}: '{}'. Skipping.",
db_or_user.lowercased_noun(),
pub fn handle_create_user_error(error: &CreateUserError, name: &str) {
let argv0 = std::env::args()
.next()
.unwrap_or_else(|| "mysql-useradm".to_string());
match error {
CreateUserError::ValidationError(ValidationError::NameValidationError(_)) => {
eprintln!(
"{}",
name_validation_error_to_error_message(&DbOrUser::User(name.into()))
);
CreateUserError::ValidationError(ValidationError::AuthorizationError(_)) => {
authorization_error_message(&DbOrUser::User(name.into()))
CreateUserError::MySqlError(_) | CreateUserError::UserAlreadyExists => {
eprintln!("{argv0}: Failed to create user '{name}'.");
pub fn handle_drop_user_error(error: &DropUserError, name: &str) {
DropUserError::ValidationError(ValidationError::NameValidationError(_)) => {
DropUserError::ValidationError(ValidationError::AuthorizationError(_)) => {
DropUserError::MySqlError(_) | DropUserError::UserDoesNotExist => {
eprintln!("{argv0}: Failed to delete user '{name}'.");
pub fn handle_list_users_error(error: &ListUsersError, name: &str) {
ListUsersError::ValidationError(ValidationError::NameValidationError(_)) => {
ListUsersError::ValidationError(ValidationError::AuthorizationError(_)) => {
ListUsersError::UserDoesNotExist => {
eprintln!("{argv0}: User '{name}' does not exist. You must create it first.",);
ListUsersError::MySqlError(_) => {
eprintln!("{argv0}: Failed to look up password for user '{name}'");
// ----------------------------------------------------------------------------
pub fn handle_create_database_error(error: &CreateDatabaseError, name: &str) {
.unwrap_or_else(|| "mysql-dbadm".to_string());
CreateDatabaseError::ValidationError(ValidationError::NameValidationError(_)) => {
name_validation_error_to_error_message(&DbOrUser::Database(name.into()))
CreateDatabaseError::ValidationError(ValidationError::AuthorizationError(_)) => {
authorization_error_message(&DbOrUser::Database(name.into()))
CreateDatabaseError::MySqlError(_) => {
eprintln!("{argv0}: Cannot create database '{name}'.");
CreateDatabaseError::DatabaseAlreadyExists => {
eprintln!("{argv0}: Database '{name}' already exists.");
pub fn handle_drop_database_error(error: &DropDatabaseError, name: &str) {
DropDatabaseError::ValidationError(ValidationError::NameValidationError(_)) => {
DropDatabaseError::ValidationError(ValidationError::AuthorizationError(_)) => {
DropDatabaseError::MySqlError(_) => {
eprintln!("{argv0}: Cannot drop database '{name}'.");
DropDatabaseError::DatabaseDoesNotExist => {
eprintln!("{argv0}: Database '{name}' doesn't exist.");
pub fn format_show_database_error_message(error: &ListPrivilegesError, name: &str) -> String {
ListPrivilegesError::ValidationError(ValidationError::NameValidationError(_)) => {
ListPrivilegesError::ValidationError(ValidationError::AuthorizationError(_)) => {
ListPrivilegesError::MySqlError(err) => {
format!("{argv0}: Failed to look up privileges for database '{name}': {err}")
ListPrivilegesError::DatabaseDoesNotExist => {
format!("{argv0}: Database '{name}' doesn't exist.")