use serde::Deserialize; /// Issue attachment uploads: presigned direct-to-storage PUTs plus the caps the /// web dialog mirrors (see `web/src/entities/issue/model/meta.ts`). #[derive(Clone, Debug, Deserialize)] #[serde(default)] pub struct IssueAttachmentConfig { pub max_size: i64, pub presign_ttl_secs: u64, /// Unreferenced (or not-yet-submitted) uploads one user may keep around. pub max_pending_per_user: u64, } impl Default for IssueAttachmentConfig { fn default() -> Self { Self { max_size: 26_214_400, presign_ttl_secs: 3600, max_pending_per_user: 50, } } } #[derive(Clone, Debug, Deserialize)] #[serde(default)] pub struct IssueConfig { pub max_pagination: u64, pub default_pagination: u64, pub max_board_name_len: usize, pub max_board_prefix_len: usize, pub max_title_len: usize, pub max_body_len: usize, pub max_comment_len: usize, pub max_label_name_len: usize, pub max_label_color_len: usize, pub max_milestone_title_len: usize, pub max_milestone_description_len: usize, pub max_reaction_emoji_len: usize, pub max_mentions_per_message: usize, pub attachment: IssueAttachmentConfig, } impl Default for IssueConfig { fn default() -> Self { Self { max_pagination: 100, default_pagination: 20, max_board_name_len: 100, max_board_prefix_len: 10, max_title_len: 255, max_body_len: 65_535, max_comment_len: 65_535, max_label_name_len: 50, max_label_color_len: 7, max_milestone_title_len: 100, max_milestone_description_len: 1024, max_reaction_emoji_len: 32, max_mentions_per_message: 20, attachment: IssueAttachmentConfig::default(), } } }