use super::MAX_NAME_LENGTH;
use crate::Identifier;
use crate::Validatable;
use crate::error::IggyError;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
pub struct CreateConsumerGroup {
#[serde(skip)]
pub stream_id: Identifier,
#[serde(skip)]
pub topic_id: Identifier,
pub name: String,
}
impl Default for CreateConsumerGroup {
fn default() -> Self {
CreateConsumerGroup {
stream_id: Identifier::default(),
topic_id: Identifier::default(),
name: "consumer_group_1".to_string(),
}
}
}
impl Validatable<IggyError> for CreateConsumerGroup {
fn validate(&self) -> Result<(), IggyError> {
if self.name.is_empty() || self.name.len() > MAX_NAME_LENGTH {
return Err(IggyError::InvalidConsumerGroupName);
}
Ok(())
}
}