create compatibility layer for mysql-admutils commands

This commit is contained in:
2024-08-05 22:37:23 +02:00
parent c473a4823e
commit 4353689a03
14 changed files with 688 additions and 79 deletions

View File

@@ -62,7 +62,30 @@ pub fn create_user_group_matching_regex(user: &User) -> String {
}
}
pub fn validate_prefix_for_user<'a>(name: &'a str, user: &User) -> anyhow::Result<&'a str> {
pub fn validate_name_token(name: &str) -> anyhow::Result<()> {
if name.is_empty() {
anyhow::bail!("Database name cannot be empty.");
}
if name.len() > 64 {
anyhow::bail!("Database name is too long. Maximum length is 64 characters.");
}
if !name.chars().all(|c| c.is_ascii_alphanumeric() || c == '_' || c == '-') {
anyhow::bail!(
indoc! {r#"
Invalid characters in name: '{}'
Only A-Z, a-z, 0-9, _ (underscore) and - (dash) are permitted.
"#},
name
);
}
Ok(())
}
pub fn validate_ownership_by_user_prefix<'a>(name: &'a str, user: &User) -> anyhow::Result<&'a str> {
let user_groups = get_unix_groups(user)?;
let mut split_name = name.split('_');