use std::sync::Arc; use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct RepoConfig { #[serde(default = "default_max_pagination")] pub max_pagination: u64, #[serde(default = "default_default_pagination")] pub default_pagination: u64, #[serde(default = "default_repo_name_len")] pub max_repo_name_len: usize, #[serde(default = "default_description_len")] pub max_description_len: usize, #[serde(default = "default_website_len")] pub max_website_len: usize, #[serde(default = "default_topic_len")] pub max_topic_len: usize, #[serde(default = "default_branch_name_len")] pub max_branch_name_len: usize, #[serde(default = "default_tag_name_len")] pub max_tag_name_len: usize, #[serde(default = "default_release_body_len")] pub max_release_body_len: usize, #[serde(default = "default_default_branch")] pub default_branch: String, #[serde(default = "default_object_format")] pub default_object_format: String, #[serde(default = "default_git_dir")] pub git_storage_root: String, #[serde(default = "default_lfs_dir")] pub lfs_storage_root: String, #[serde(default = "default_branch_protection_priority_max")] pub branch_protection_priority_max: i64, #[serde(default = "default_max_topics")] pub max_topics_per_repo: usize, #[serde(default = "default_pr_title_len")] pub max_pr_title_len: usize, #[serde(default = "default_pr_body_len")] pub max_pr_body_len: usize, } fn default_max_pagination() -> u64 { 100 } fn default_default_pagination() -> u64 { 20 } fn default_repo_name_len() -> usize { 100 } fn default_description_len() -> usize { 512 } fn default_website_len() -> usize { 256 } fn default_topic_len() -> usize { 35 } fn default_branch_name_len() -> usize { 100 } fn default_tag_name_len() -> usize { 100 } fn default_release_body_len() -> usize { 65535 } fn default_default_branch() -> String { "main".to_string() } fn default_object_format() -> String { "sha1".to_string() } fn default_git_dir() -> String { "/var/lib/repo/git".to_string() } fn default_lfs_dir() -> String { "/var/lib/repo/lfs".to_string() } fn default_branch_protection_priority_max() -> i64 { 10_000 } fn default_max_topics() -> usize { 25 } fn default_pr_title_len() -> usize { 255 } fn default_pr_body_len() -> usize { 65535 } impl Default for RepoConfig { fn default() -> Self { Self { max_pagination: default_max_pagination(), default_pagination: default_default_pagination(), max_repo_name_len: default_repo_name_len(), max_description_len: default_description_len(), max_website_len: default_website_len(), max_topic_len: default_topic_len(), max_branch_name_len: default_branch_name_len(), max_tag_name_len: default_tag_name_len(), max_release_body_len: default_release_body_len(), default_branch: default_default_branch(), default_object_format: default_object_format(), git_storage_root: default_git_dir(), lfs_storage_root: default_lfs_dir(), branch_protection_priority_max: default_branch_protection_priority_max(), max_topics_per_repo: default_max_topics(), max_pr_title_len: default_pr_title_len(), max_pr_body_len: default_pr_body_len(), } } } pub type SharedRepoConfig = Arc;