Skip to content

Commit f9cfac5

Browse files
authored
Merge pull request #490 from Kobzol/mergeability-priority
Add priority to mergeability queue
2 parents cf6e9ca + 050481f commit f9cfac5

File tree

6 files changed

+307
-193
lines changed

6 files changed

+307
-193
lines changed

src/bors/handlers/pr_events.rs

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use crate::bors::handlers::workflow::{AutoBuildCancelReason, maybe_cancel_auto_b
1212
use crate::bors::merge_queue::MergeQueueSender;
1313
use crate::bors::mergeability_queue::MergeabilityQueueSender;
1414
use crate::bors::{Comment, PullRequestStatus, RepositoryState};
15-
use crate::database::MergeableState;
15+
use crate::database::{MergeableState, UpsertPullRequestParams};
1616
use crate::github::{CommitSha, PullRequestNumber};
1717
use crate::utils::text::pluralize;
1818
use std::sync::Arc;
@@ -34,7 +34,7 @@ pub(super) async fn handle_pull_request_edited(
3434
return Ok(());
3535
};
3636

37-
mergeability_queue.enqueue_pr(pr_model.repository.clone(), pr_number);
37+
mergeability_queue.enqueue_pr(&pr_model);
3838

3939
if !pr_model.is_approved() {
4040
return Ok(());
@@ -56,7 +56,7 @@ pub(super) async fn handle_push_to_pull_request(
5656
.upsert_pull_request(repo_state.repository(), pr.clone().into())
5757
.await?;
5858

59-
mergeability_queue.enqueue_pr(repo_state.repository().clone(), pr_number);
59+
mergeability_queue.enqueue_pr(&pr_model);
6060

6161
let auto_build_cancel_message = maybe_cancel_auto_build(
6262
&repo_state.client,
@@ -110,20 +110,24 @@ pub(super) async fn handle_pull_request_opened(
110110
.iter()
111111
.map(|user| user.username.clone())
112112
.collect();
113-
db.create_pull_request(
114-
repo_state.repository(),
115-
payload.pull_request.number,
116-
&payload.pull_request.title,
117-
&payload.pull_request.author.username,
118-
&assignees,
119-
&payload.pull_request.base.name,
120-
pr_status,
121-
)
122-
.await?;
113+
let pr = db
114+
.upsert_pull_request(
115+
repo_state.repository(),
116+
UpsertPullRequestParams {
117+
pr_number: payload.pull_request.number,
118+
title: payload.pull_request.title.clone(),
119+
author: payload.pull_request.author.username.clone(),
120+
assignees,
121+
base_branch: payload.pull_request.base.name.clone(),
122+
mergeable_state: MergeableState::Unknown,
123+
pr_status,
124+
},
125+
)
126+
.await?;
123127

124128
process_pr_description_commands(&payload, repo_state.clone(), db, ctx, merge_queue_tx).await?;
125129

126-
mergeability_queue.enqueue_pr(repo_state.repository().clone(), payload.pull_request.number);
130+
mergeability_queue.enqueue_pr(&pr);
127131

128132
Ok(())
129133
}
@@ -161,11 +165,11 @@ pub(super) async fn handle_pull_request_reopened(
161165
payload: PullRequestReopened,
162166
) -> anyhow::Result<()> {
163167
let pr = &payload.pull_request;
164-
let pr_number = pr.number;
165-
db.upsert_pull_request(repo_state.repository(), pr.clone().into())
168+
let pr = db
169+
.upsert_pull_request(repo_state.repository(), pr.clone().into())
166170
.await?;
167171

168-
mergeability_queue.enqueue_pr(repo_state.repository().clone(), pr_number);
172+
mergeability_queue.enqueue_pr(&pr);
169173

170174
Ok(())
171175
}
@@ -257,7 +261,7 @@ pub(super) async fn handle_push_to_branch(
257261
);
258262

259263
for pr in affected_prs {
260-
mergeability_queue.enqueue_pr(repo_state.repository().clone(), pr.number);
264+
mergeability_queue.enqueue_pr(&pr);
261265
}
262266
}
263267

src/bors/handlers/refresh.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ pub async fn reload_mergeability_status(
115115
);
116116

117117
for pr in prs {
118-
mergeability_queue.enqueue_pr(repo.repository().clone(), pr.number);
118+
mergeability_queue.enqueue_pr(&pr);
119119
}
120120

121121
Ok(())

0 commit comments

Comments
 (0)