murgamu 0.7.3

Murgamü is an NestJS-inspired web framework for Rust
Documentation
use crate::core::error::MurError;

pub struct MurIs;

impl MurIs {
	pub fn mur_validate_not_empty(value: &str, field_name: &str) -> Result<(), MurError> {
		if value.trim().is_empty() {
			Err(MurError::BadRequest(format!(
				"{} cannot be empty",
				field_name
			)))
		} else {
			Ok(())
		}
	}

	pub fn mur_validate_length(
		value: &str,
		field_name: &str,
		min: Option<usize>,
		max: Option<usize>,
	) -> Result<(), MurError> {
		let len = value.len();

		if let Some(min_len) = min {
			if len < min_len {
				return Err(MurError::BadRequest(format!(
					"{} must be at least {} characters",
					field_name, min_len
				)));
			}
		}

		if let Some(max_len) = max {
			if len > max_len {
				return Err(MurError::BadRequest(format!(
					"{} must be at most {} characters",
					field_name, max_len
				)));
			}
		}

		Ok(())
	}

	pub fn mur_validate_pattern(
		value: &str,
		pattern: &str,
		field_name: &str,
	) -> Result<(), MurError> {
		let re = regex::Regex::new(pattern)
			.map_err(|e| MurError::Internal(format!("Invalid regex pattern: {}", e)))?;

		if !re.is_match(value) {
			Err(MurError::BadRequest(format!(
				"{} has invalid format",
				field_name
			)))
		} else {
			Ok(())
		}
	}
}