d6dc02f
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(),
}
}
}