Skip to content

Commit d07200c

Browse files
committed
Refactor PR DB update methods to use PullRequestModel as parameter
1 parent 9ac4f4d commit d07200c

File tree

3 files changed

+45
-84
lines changed

3 files changed

+45
-84
lines changed

src/bors/handlers/pr_events.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,15 @@ pub(super) async fn handle_pull_request_edited(
1818
return Ok(());
1919
};
2020

21-
db.update_pr_base_branch(repo_state.repository(), pr_number, &pr.base.name)
22-
.await?;
2321
let pr_model = db
2422
.get_or_create_pull_request(repo_state.repository(), pr_number, &pr.base.name)
2523
.await?;
24+
db.update_pr_base_branch(&pr_model, &pr.base.name).await?;
2625
if !pr_model.is_approved() {
2726
return Ok(());
2827
}
2928

30-
db.unapprove(repo_state.repository(), pr_number, &pr.base.name)
31-
.await?;
29+
db.unapprove(&pr_model).await?;
3230
handle_label_trigger(&repo_state, pr_number, LabelTrigger::Unapproved).await?;
3331
notify_of_edited_pr(&repo_state, pr_number, &payload.pull_request.base.name).await
3432
}
@@ -48,8 +46,7 @@ pub(super) async fn handle_push_to_pull_request(
4846
}
4947

5048
let pr_number = pr_model.number;
51-
db.unapprove(repo_state.repository(), pr_number, &pr.base.name)
52-
.await?;
49+
db.unapprove(&pr_model).await?;
5350
handle_label_trigger(&repo_state, pr_number, LabelTrigger::Unapproved).await?;
5451
notify_of_pushed_pr(&repo_state, pr_number, pr.head.sha.clone()).await
5552
}

src/bors/handlers/review.rs

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,12 @@ pub(super) async fn command_approve(
3939
approver: approver.clone(),
4040
sha: pr.head.sha.to_string(),
4141
};
42-
db.approve(
43-
repo_state.repository(),
44-
pr.number,
45-
approval_info,
46-
priority,
47-
&pr.base.name,
48-
rollup,
49-
)
50-
.await?;
42+
let pr_model = db
43+
.get_or_create_pull_request(repo_state.repository(), pr.number, &pr.base.name)
44+
.await?;
45+
46+
db.approve(&pr_model, approval_info, priority, rollup)
47+
.await?;
5148
handle_label_trigger(&repo_state, pr.number, LabelTrigger::Approved).await?;
5249
notify_of_approval(&repo_state, pr, approver.as_str()).await
5350
}
@@ -65,8 +62,11 @@ pub(super) async fn command_unapprove(
6562
deny_request(&repo_state, pr, author, PermissionType::Review).await?;
6663
return Ok(());
6764
};
68-
db.unapprove(repo_state.repository(), pr.number, &pr.base.name)
65+
let pr_model = db
66+
.get_or_create_pull_request(repo_state.repository(), pr.number, &pr.base.name)
6967
.await?;
68+
69+
db.unapprove(&pr_model).await?;
7070
handle_label_trigger(&repo_state, pr.number, LabelTrigger::Unapproved).await?;
7171
notify_of_unapproval(&repo_state, pr).await
7272
}
@@ -84,8 +84,11 @@ pub(super) async fn command_set_priority(
8484
deny_request(&repo_state, pr, author, PermissionType::Review).await?;
8585
return Ok(());
8686
};
87-
db.set_priority(repo_state.repository(), pr.number, &pr.base.name, priority)
88-
.await
87+
let pr_model = db
88+
.get_or_create_pull_request(repo_state.repository(), pr.number, &pr.base.name)
89+
.await?;
90+
91+
db.set_priority(&pr_model, priority).await
8992
}
9093

9194
/// Delegate approval authority of a pull request to its author.
@@ -101,10 +104,12 @@ pub(super) async fn command_delegate(
101104
return Ok(());
102105
}
103106

104-
let delegatee = pr.author.username.clone();
105-
db.delegate(repo_state.repository(), pr.number, &pr.base.name)
107+
let pr_model = db
108+
.get_or_create_pull_request(repo_state.repository(), pr.number, &pr.base.name)
106109
.await?;
107-
notify_of_delegation(&repo_state, pr, &delegatee).await
110+
111+
db.delegate(&pr_model).await?;
112+
notify_of_delegation(&repo_state, pr, &pr.author.username).await
108113
}
109114

110115
/// Revoke any previously granted delegation.
@@ -119,8 +124,11 @@ pub(super) async fn command_undelegate(
119124
deny_request(&repo_state, pr, author, PermissionType::Review).await?;
120125
return Ok(());
121126
}
122-
db.undelegate(repo_state.repository(), pr.number, &pr.base.name)
123-
.await
127+
let pr_model = db
128+
.get_or_create_pull_request(repo_state.repository(), pr.number, &pr.base.name)
129+
.await?;
130+
131+
db.undelegate(&pr_model).await
124132
}
125133

126134
/// Set the rollup of a pull request.
@@ -136,8 +144,11 @@ pub(super) async fn command_set_rollup(
136144
deny_request(&repo_state, pr, author, PermissionType::Review).await?;
137145
return Ok(());
138146
}
139-
db.set_rollup(repo_state.repository(), pr.number, &pr.base.name, rollup)
140-
.await
147+
let pr_model = db
148+
.get_or_create_pull_request(repo_state.repository(), pr.number, &pr.base.name)
149+
.await?;
150+
151+
db.set_rollup(&pr_model, rollup).await
141152
}
142153

143154
pub(super) async fn command_close_tree(

src/database/client.rs

Lines changed: 12 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -30,78 +30,43 @@ impl PgDbClient {
3030

3131
pub async fn approve(
3232
&self,
33-
repo: &GithubRepoName,
34-
pr_number: PullRequestNumber,
33+
pr: &PullRequestModel,
3534
approval_info: ApprovalInfo,
3635
priority: Option<u32>,
37-
base_branch: &str,
3836
rollup: Option<RollupMode>,
3937
) -> anyhow::Result<()> {
40-
let pr = self
41-
.get_or_create_pull_request(repo, pr_number, base_branch)
42-
.await?;
4338
approve_pull_request(&self.pool, pr.id, approval_info, priority, rollup).await
4439
}
4540

46-
pub async fn unapprove(
47-
&self,
48-
repo: &GithubRepoName,
49-
pr_number: PullRequestNumber,
50-
base_branch: &str,
51-
) -> anyhow::Result<()> {
52-
let pr = self
53-
.get_or_create_pull_request(repo, pr_number, base_branch)
54-
.await?;
41+
pub async fn unapprove(&self, pr: &PullRequestModel) -> anyhow::Result<()> {
5542
unapprove_pull_request(&self.pool, pr.id).await
5643
}
5744

58-
pub async fn set_priority(
59-
&self,
60-
repo: &GithubRepoName,
61-
pr_number: PullRequestNumber,
62-
base_branch: &str,
63-
priority: u32,
64-
) -> anyhow::Result<()> {
65-
let pr = self
66-
.get_or_create_pull_request(repo, pr_number, base_branch)
67-
.await?;
45+
pub async fn set_priority(&self, pr: &PullRequestModel, priority: u32) -> anyhow::Result<()> {
6846
set_pr_priority(&self.pool, pr.id, priority).await
6947
}
7048

71-
pub async fn delegate(
72-
&self,
73-
repo: &GithubRepoName,
74-
pr_number: PullRequestNumber,
75-
base_branch: &str,
76-
) -> anyhow::Result<()> {
77-
let pr = self
78-
.get_or_create_pull_request(repo, pr_number, base_branch)
79-
.await?;
49+
pub async fn delegate(&self, pr: &PullRequestModel) -> anyhow::Result<()> {
8050
delegate_pull_request(&self.pool, pr.id).await
8151
}
8252

83-
pub async fn undelegate(
53+
pub async fn undelegate(&self, pr: &PullRequestModel) -> anyhow::Result<()> {
54+
undelegate_pull_request(&self.pool, pr.id).await
55+
}
56+
57+
pub async fn update_pr_base_branch(
8458
&self,
85-
repo: &GithubRepoName,
86-
pr_number: PullRequestNumber,
59+
pr: &PullRequestModel,
8760
base_branch: &str,
8861
) -> anyhow::Result<()> {
89-
let pr = self
90-
.get_or_create_pull_request(repo, pr_number, base_branch)
91-
.await?;
92-
undelegate_pull_request(&self.pool, pr.id).await
62+
update_pr_base_branch(&self.pool, &pr.repository, pr.id, base_branch).await
9363
}
9464

9565
pub async fn set_rollup(
9666
&self,
97-
repo: &GithubRepoName,
98-
pr_number: PullRequestNumber,
99-
base_branch: &str,
67+
pr: &PullRequestModel,
10068
rollup: RollupMode,
10169
) -> anyhow::Result<()> {
102-
let pr = self
103-
.get_or_create_pull_request(repo, pr_number, base_branch)
104-
.await?;
10570
set_pr_rollup(&self.pool, pr.id, rollup).await
10671
}
10772

@@ -131,18 +96,6 @@ impl PgDbClient {
13196
create_pull_request(&self.pool, repo, pr_number, base_branch).await
13297
}
13398

134-
pub async fn update_pr_base_branch(
135-
&self,
136-
repo: &GithubRepoName,
137-
pr_number: PullRequestNumber,
138-
base_branch: &str,
139-
) -> anyhow::Result<()> {
140-
let pr = self
141-
.get_or_create_pull_request(repo, pr_number, base_branch)
142-
.await?;
143-
update_pr_base_branch(&self.pool, repo, pr.id, base_branch).await
144-
}
145-
14699
pub async fn find_pr_by_build(
147100
&self,
148101
build: &BuildModel,

0 commit comments

Comments
 (0)