Skip to content

Commit f303fd4

Browse files
ref(build): Use VcsInfo directly in ChunkedBuildRequest (#2943)
### Description `serde(flatten)` tells serde to directly serialize these fields into the same level as the rest of the struct, without any nesting. That way, we don't need to redefine all the VCS fields on `ChunkedBuildRequest`.
1 parent 63b187c commit f303fd4

File tree

3 files changed

+14
-26
lines changed

3 files changed

+14
-26
lines changed

src/api/data_types/chunking/build.rs

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
use serde::{Deserialize, Serialize};
22
use sha1_smol::Digest;
33

4+
use crate::api::VcsInfo;
5+
46
use super::ChunkedFileState;
57

68
#[derive(Debug, Serialize)]
@@ -11,23 +13,8 @@ pub struct ChunkedBuildRequest<'a> {
1113
pub build_configuration: Option<&'a str>,
1214
#[serde(skip_serializing_if = "Option::is_none")]
1315
pub release_notes: Option<&'a str>,
14-
// VCS fields
15-
#[serde(skip_serializing_if = "Option::is_none")]
16-
pub head_sha: Option<&'a str>,
17-
#[serde(skip_serializing_if = "Option::is_none")]
18-
pub base_sha: Option<&'a str>,
19-
#[serde(skip_serializing_if = "Option::is_none")]
20-
pub provider: Option<&'a str>,
21-
#[serde(skip_serializing_if = "Option::is_none")]
22-
pub head_repo_name: Option<&'a str>,
23-
#[serde(skip_serializing_if = "Option::is_none")]
24-
pub base_repo_name: Option<&'a str>,
25-
#[serde(skip_serializing_if = "Option::is_none")]
26-
pub head_ref: Option<&'a str>,
27-
#[serde(skip_serializing_if = "Option::is_none")]
28-
pub base_ref: Option<&'a str>,
29-
#[serde(skip_serializing_if = "Option::is_none")]
30-
pub pr_number: Option<&'a u32>,
16+
#[serde(flatten)]
17+
pub vcs_info: &'a VcsInfo<'a>,
3118
}
3219

3320
#[derive(Debug, Deserialize)]

src/api/mod.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2521,15 +2521,23 @@ struct LogsResponse {
25212521
}
25222522

25232523
/// VCS information for build app uploads
2524-
#[derive(Debug)]
2524+
#[derive(Debug, Serialize)]
25252525
pub struct VcsInfo<'a> {
2526+
#[serde(skip_serializing_if = "Option::is_none")]
25262527
pub head_sha: Option<&'a str>,
2528+
#[serde(skip_serializing_if = "Option::is_none")]
25272529
pub base_sha: Option<&'a str>,
2530+
#[serde(skip_serializing_if = "Option::is_none", rename = "provider")]
25282531
pub vcs_provider: Option<&'a str>,
2532+
#[serde(skip_serializing_if = "Option::is_none")]
25292533
pub head_repo_name: Option<&'a str>,
2534+
#[serde(skip_serializing_if = "Option::is_none")]
25302535
pub base_repo_name: Option<&'a str>,
2536+
#[serde(skip_serializing_if = "Option::is_none")]
25312537
pub head_ref: Option<&'a str>,
2538+
#[serde(skip_serializing_if = "Option::is_none")]
25322539
pub base_ref: Option<&'a str>,
2540+
#[serde(skip_serializing_if = "Option::is_none")]
25332541
pub pr_number: Option<&'a u32>,
25342542
}
25352543

src/commands/build/upload.rs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -566,14 +566,7 @@ fn upload_file(
566566
chunks: &checksums,
567567
build_configuration,
568568
release_notes,
569-
head_sha: vcs_info.head_sha,
570-
base_sha: vcs_info.base_sha,
571-
provider: vcs_info.vcs_provider,
572-
head_repo_name: vcs_info.head_repo_name,
573-
base_repo_name: vcs_info.base_repo_name,
574-
head_ref: vcs_info.head_ref,
575-
base_ref: vcs_info.base_ref,
576-
pr_number: vcs_info.pr_number,
569+
vcs_info,
577570
},
578571
)?;
579572
chunks.retain(|Chunk((digest, _))| response.missing_chunks.contains(digest));

0 commit comments

Comments
 (0)