use std::sync::Arc; use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct IssueConfig { #[serde(default = "default_max_pagination")] pub max_pagination: u64, #[serde(default = "default_default_pagination")] pub default_pagination: u64, #[serde(default = "default_max_title_len")] pub max_title_len: usize, #[serde(default = "default_max_body_len")] pub max_body_len: usize, #[serde(default = "default_max_collection_name_len")] pub max_collection_name_len: usize, #[serde(default = "default_max_label_name_len")] pub max_label_name_len: usize, #[serde(default = "default_max_label_color_len")] pub max_label_color_len: usize, #[serde(default = "default_max_milestone_title_len")] pub max_milestone_title_len: usize, #[serde(default = "default_max_milestone_description_len")] pub max_milestone_description_len: usize, #[serde(default = "default_max_comment_len")] pub max_comment_len: usize, #[serde(default = "default_default_collection_name")] pub default_collection_name: String, #[serde(default = "default_max_reaction_emoji_len")] pub max_reaction_emoji_len: usize, #[serde(default = "default_max_attachment_size_bytes")] pub max_attachment_size_bytes: i64, #[serde(default = "default_max_dependency_label_len")] pub max_dependency_label_len: usize, #[serde(default = "default_max_event_content_len")] pub max_event_content_len: usize, } fn default_max_pagination() -> u64 { 100 } fn default_default_pagination() -> u64 { 20 } fn default_max_title_len() -> usize { 255 } fn default_max_body_len() -> usize { 65_535 } fn default_max_collection_name_len() -> usize { 100 } fn default_max_label_name_len() -> usize { 50 } fn default_max_label_color_len() -> usize { 7 } fn default_max_milestone_title_len() -> usize { 100 } fn default_max_milestone_description_len() -> usize { 1024 } fn default_max_comment_len() -> usize { 65_535 } fn default_default_collection_name() -> String { "default".to_string() } fn default_max_reaction_emoji_len() -> usize { 32 } fn default_max_attachment_size_bytes() -> i64 { 10 * 1024 * 1024 } fn default_max_dependency_label_len() -> usize { 100 } fn default_max_event_content_len() -> usize { 4096 } impl Default for IssueConfig { fn default() -> Self { Self { max_pagination: default_max_pagination(), default_pagination: default_default_pagination(), max_title_len: default_max_title_len(), max_body_len: default_max_body_len(), max_collection_name_len: default_max_collection_name_len(), max_label_name_len: default_max_label_name_len(), max_label_color_len: default_max_label_color_len(), max_milestone_title_len: default_max_milestone_title_len(), max_milestone_description_len: default_max_milestone_description_len(), max_comment_len: default_max_comment_len(), default_collection_name: default_default_collection_name(), max_reaction_emoji_len: default_max_reaction_emoji_len(), max_attachment_size_bytes: default_max_attachment_size_bytes(), max_dependency_label_len: default_max_dependency_label_len(), max_event_content_len: default_max_event_content_len(), } } } pub type SharedIssueConfig = Arc;