Merge pull request 'strongly type repository default merge style' (#48) from enum-repo-merge-style into main
Reviewed-on: https://codeberg.org/Cyborus/forgejo-api/pulls/48
This commit is contained in:
		
						commit
						1d321c66e3
					
				
					 4 changed files with 53 additions and 9 deletions
				
			
		| 
						 | 
				
			
			@ -72,12 +72,21 @@ fn schema_type_name(
 | 
			
		|||
        match ty {
 | 
			
		||||
            SchemaType::One(prim) => {
 | 
			
		||||
                let name = match prim {
 | 
			
		||||
                    Primitive::String => match schema.format.as_deref() {
 | 
			
		||||
                    Primitive::String if schema._enum.is_none() => match schema.format.as_deref() {
 | 
			
		||||
                        Some("date") => "time::Date",
 | 
			
		||||
                        Some("date-time") => "time::OffsetDateTime",
 | 
			
		||||
                        _ => "String",
 | 
			
		||||
                    }
 | 
			
		||||
                    .to_string(),
 | 
			
		||||
                    Primitive::String => {
 | 
			
		||||
                        match (&schema.title, definition_name) {
 | 
			
		||||
                            // Some of the titles are actually descriptions; not sure why
 | 
			
		||||
                            // Checking for a space filters that out
 | 
			
		||||
                            (Some(title), _) if !title.contains(' ') => title.to_string(),
 | 
			
		||||
                            (_, Some(definition_name)) => definition_name.to_string(),
 | 
			
		||||
                            (_, None) => "String".to_string(),
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    Primitive::Number => match schema.format.as_deref() {
 | 
			
		||||
                        Some("float") => "f32",
 | 
			
		||||
                        Some("double") => "f64",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -793,6 +793,19 @@ pub struct Cron {
 | 
			
		|||
    pub schedule: Option<String>,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
 | 
			
		||||
pub enum DefaultMergeStyle {
 | 
			
		||||
    #[serde(rename = "merge")]
 | 
			
		||||
    Merge,
 | 
			
		||||
    #[serde(rename = "rebase")]
 | 
			
		||||
    Rebase,
 | 
			
		||||
    #[serde(rename = "rebase-merge")]
 | 
			
		||||
    RebaseMerge,
 | 
			
		||||
    #[serde(rename = "squash")]
 | 
			
		||||
    Squash,
 | 
			
		||||
    #[serde(rename = "fast-forward-only")]
 | 
			
		||||
    FastForwardOnly,
 | 
			
		||||
}
 | 
			
		||||
/// DeleteEmailOption options when deleting email addresses
 | 
			
		||||
#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
 | 
			
		||||
pub struct DeleteEmailOption {
 | 
			
		||||
| 
						 | 
				
			
			@ -1039,8 +1052,7 @@ pub struct EditRepoOption {
 | 
			
		|||
    pub default_branch: Option<String>,
 | 
			
		||||
    /// set to `true` to delete pr branch after merge by default
 | 
			
		||||
    pub default_delete_branch_after_merge: Option<bool>,
 | 
			
		||||
    /// set to a merge style to be used by this repository: "merge", "rebase", "rebase-merge", "squash", or "fast-forward-only".
 | 
			
		||||
    pub default_merge_style: Option<String>,
 | 
			
		||||
    pub default_merge_style: Option<DefaultMergeStyle>,
 | 
			
		||||
    /// a short description of the repository.
 | 
			
		||||
    pub description: Option<String>,
 | 
			
		||||
    /// enable prune - remove obsolete remote-tracking references
 | 
			
		||||
| 
						 | 
				
			
			@ -2212,7 +2224,7 @@ pub struct Repository {
 | 
			
		|||
    pub default_allow_maintainer_edit: Option<bool>,
 | 
			
		||||
    pub default_branch: Option<String>,
 | 
			
		||||
    pub default_delete_branch_after_merge: Option<bool>,
 | 
			
		||||
    pub default_merge_style: Option<String>,
 | 
			
		||||
    pub default_merge_style: Option<DefaultMergeStyle>,
 | 
			
		||||
    pub description: Option<String>,
 | 
			
		||||
    pub empty: Option<bool>,
 | 
			
		||||
    pub external_tracker: Option<ExternalTracker>,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										16
									
								
								src/lib.rs
									
										
									
									
									
								
							
							
						
						
									
										16
									
								
								src/lib.rs
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -253,3 +253,19 @@ fn none_if_blank_url<'de, D: serde::Deserializer<'de>>(
 | 
			
		|||
 | 
			
		||||
    deserializer.deserialize_str(EmptyUrlVisitor)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl From<structs::DefaultMergeStyle> for structs::MergePullRequestOptionDo {
 | 
			
		||||
    fn from(value: structs::DefaultMergeStyle) -> Self {
 | 
			
		||||
        match value {
 | 
			
		||||
            structs::DefaultMergeStyle::Merge => structs::MergePullRequestOptionDo::Merge,
 | 
			
		||||
            structs::DefaultMergeStyle::Rebase => structs::MergePullRequestOptionDo::Rebase,
 | 
			
		||||
            structs::DefaultMergeStyle::RebaseMerge => {
 | 
			
		||||
                structs::MergePullRequestOptionDo::RebaseMerge
 | 
			
		||||
            }
 | 
			
		||||
            structs::DefaultMergeStyle::Squash => structs::MergePullRequestOptionDo::Squash,
 | 
			
		||||
            structs::DefaultMergeStyle::FastForwardOnly => {
 | 
			
		||||
                structs::MergePullRequestOptionDo::FastForwardOnly
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17622,6 +17622,16 @@
 | 
			
		|||
      },
 | 
			
		||||
      "x-go-package": "code.gitea.io/gitea/modules/structs"
 | 
			
		||||
    },
 | 
			
		||||
    "DefaultMergeStyle": {
 | 
			
		||||
      "type": "string",
 | 
			
		||||
      "enum": [
 | 
			
		||||
        "merge",
 | 
			
		||||
        "rebase",
 | 
			
		||||
        "rebase-merge",
 | 
			
		||||
        "squash",
 | 
			
		||||
        "fast-forward-only"
 | 
			
		||||
      ]
 | 
			
		||||
    },
 | 
			
		||||
    "DeleteEmailOption": {
 | 
			
		||||
      "description": "DeleteEmailOption options when deleting email addresses",
 | 
			
		||||
      "type": "object",
 | 
			
		||||
| 
						 | 
				
			
			@ -18269,9 +18279,7 @@
 | 
			
		|||
          "x-go-name": "DefaultDeleteBranchAfterMerge"
 | 
			
		||||
        },
 | 
			
		||||
        "default_merge_style": {
 | 
			
		||||
          "description": "set to a merge style to be used by this repository: \"merge\", \"rebase\", \"rebase-merge\", \"squash\", or \"fast-forward-only\".",
 | 
			
		||||
          "type": "string",
 | 
			
		||||
          "x-go-name": "DefaultMergeStyle"
 | 
			
		||||
          "$ref": "#/definitions/DefaultMergeStyle"
 | 
			
		||||
        },
 | 
			
		||||
        "description": {
 | 
			
		||||
          "description": "a short description of the repository.",
 | 
			
		||||
| 
						 | 
				
			
			@ -21151,8 +21159,7 @@
 | 
			
		|||
          "x-go-name": "DefaultDeleteBranchAfterMerge"
 | 
			
		||||
        },
 | 
			
		||||
        "default_merge_style": {
 | 
			
		||||
          "type": "string",
 | 
			
		||||
          "x-go-name": "DefaultMergeStyle"
 | 
			
		||||
          "$ref": "#/definitions/DefaultMergeStyle"
 | 
			
		||||
        },
 | 
			
		||||
        "description": {
 | 
			
		||||
          "type": "string",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue