1
0
Fork 0

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:
Cyborus 2024-04-26 17:25:13 +00:00
commit 1d321c66e3
4 changed files with 53 additions and 9 deletions

View file

@ -72,12 +72,21 @@ fn schema_type_name(
match ty { match ty {
SchemaType::One(prim) => { SchemaType::One(prim) => {
let name = match 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::Date",
Some("date-time") => "time::OffsetDateTime", Some("date-time") => "time::OffsetDateTime",
_ => "String", _ => "String",
} }
.to_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() { Primitive::Number => match schema.format.as_deref() {
Some("float") => "f32", Some("float") => "f32",
Some("double") => "f64", Some("double") => "f64",

View file

@ -793,6 +793,19 @@ pub struct Cron {
pub schedule: Option<String>, 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 /// DeleteEmailOption options when deleting email addresses
#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
pub struct DeleteEmailOption { pub struct DeleteEmailOption {
@ -1039,8 +1052,7 @@ pub struct EditRepoOption {
pub default_branch: Option<String>, pub default_branch: Option<String>,
/// set to `true` to delete pr branch after merge by default /// set to `true` to delete pr branch after merge by default
pub default_delete_branch_after_merge: Option<bool>, 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<DefaultMergeStyle>,
pub default_merge_style: Option<String>,
/// a short description of the repository. /// a short description of the repository.
pub description: Option<String>, pub description: Option<String>,
/// enable prune - remove obsolete remote-tracking references /// enable prune - remove obsolete remote-tracking references
@ -2212,7 +2224,7 @@ pub struct Repository {
pub default_allow_maintainer_edit: Option<bool>, pub default_allow_maintainer_edit: Option<bool>,
pub default_branch: Option<String>, pub default_branch: Option<String>,
pub default_delete_branch_after_merge: Option<bool>, 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 description: Option<String>,
pub empty: Option<bool>, pub empty: Option<bool>,
pub external_tracker: Option<ExternalTracker>, pub external_tracker: Option<ExternalTracker>,

View file

@ -253,3 +253,19 @@ fn none_if_blank_url<'de, D: serde::Deserializer<'de>>(
deserializer.deserialize_str(EmptyUrlVisitor) 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
}
}
}
}

View file

@ -17622,6 +17622,16 @@
}, },
"x-go-package": "code.gitea.io/gitea/modules/structs" "x-go-package": "code.gitea.io/gitea/modules/structs"
}, },
"DefaultMergeStyle": {
"type": "string",
"enum": [
"merge",
"rebase",
"rebase-merge",
"squash",
"fast-forward-only"
]
},
"DeleteEmailOption": { "DeleteEmailOption": {
"description": "DeleteEmailOption options when deleting email addresses", "description": "DeleteEmailOption options when deleting email addresses",
"type": "object", "type": "object",
@ -18269,9 +18279,7 @@
"x-go-name": "DefaultDeleteBranchAfterMerge" "x-go-name": "DefaultDeleteBranchAfterMerge"
}, },
"default_merge_style": { "default_merge_style": {
"description": "set to a merge style to be used by this repository: \"merge\", \"rebase\", \"rebase-merge\", \"squash\", or \"fast-forward-only\".", "$ref": "#/definitions/DefaultMergeStyle"
"type": "string",
"x-go-name": "DefaultMergeStyle"
}, },
"description": { "description": {
"description": "a short description of the repository.", "description": "a short description of the repository.",
@ -21151,8 +21159,7 @@
"x-go-name": "DefaultDeleteBranchAfterMerge" "x-go-name": "DefaultDeleteBranchAfterMerge"
}, },
"default_merge_style": { "default_merge_style": {
"type": "string", "$ref": "#/definitions/DefaultMergeStyle"
"x-go-name": "DefaultMergeStyle"
}, },
"description": { "description": {
"type": "string", "type": "string",