use super::defaults::*;
use crate::Identifier;
use crate::UserStatus;
use crate::Validatable;
use crate::error::IggyError;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, PartialEq, Default, Clone)]
pub struct UpdateUser {
#[serde(skip)]
pub user_id: Identifier,
pub username: Option<String>,
pub status: Option<UserStatus>,
}
impl Validatable<IggyError> for UpdateUser {
fn validate(&self) -> Result<(), IggyError> {
if self.username.is_none() {
return Ok(());
}
let username = self.username.as_ref().unwrap();
if username.is_empty()
|| username.len() > MAX_USERNAME_LENGTH
|| username.len() < MIN_USERNAME_LENGTH
{
return Err(IggyError::InvalidUsername);
}
Ok(())
}
}