use std::sync::Arc; use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct SpaceConfig { #[serde(default = "default_max_pagination")] pub max_pagination: u64, #[serde(default = "default_default_pagination")] pub default_pagination: u64, #[serde(default = "default_max_space_name_len")] pub max_space_name_len: usize, #[serde(default = "default_max_space_desc_len")] pub max_space_desc_len: usize, #[serde(default = "default_max_role_name_len")] pub max_role_name_len: usize, #[serde(default = "default_max_alias_name_len")] pub max_alias_name_len: usize, #[serde(default = "default_max_invite_email_len")] pub max_invite_email_len: usize, #[serde(default = "default_max_channel_name_len")] pub max_channel_name_len: usize, #[serde(default = "default_max_topic_len")] pub max_topic_len: usize, #[serde(default = "default_max_purpose_len")] pub max_purpose_len: usize, #[serde(default = "default_invite_expiry_hours")] pub invite_expiry_hours: i64, } fn default_max_pagination() -> u64 { 100 } fn default_default_pagination() -> u64 { 20 } fn default_max_space_name_len() -> usize { 64 } fn default_max_space_desc_len() -> usize { 512 } fn default_max_role_name_len() -> usize { 64 } fn default_max_alias_name_len() -> usize { 64 } fn default_max_invite_email_len() -> usize { 320 } fn default_max_channel_name_len() -> usize { 64 } fn default_max_topic_len() -> usize { 256 } fn default_max_purpose_len() -> usize { 512 } fn default_invite_expiry_hours() -> i64 { 24 } impl Default for SpaceConfig { fn default() -> Self { Self { max_pagination: default_max_pagination(), default_pagination: default_default_pagination(), max_space_name_len: default_max_space_name_len(), max_space_desc_len: default_max_space_desc_len(), max_role_name_len: default_max_role_name_len(), max_alias_name_len: default_max_alias_name_len(), max_invite_email_len: default_max_invite_email_len(), max_channel_name_len: default_max_channel_name_len(), max_topic_len: default_max_topic_len(), max_purpose_len: default_max_purpose_len(), invite_expiry_hours: default_invite_expiry_hours(), } } } #[allow(dead_code)] pub type SharedSpaceConfig = Arc;