Skip to content

Commit fa00afc

Browse files
authored
feat: link PRs to issues directly (#3113)
* feat: link PRs to issues directly Add the ability to link PRs to issues without going through workspace creation. * address review feedback
1 parent 69aba30 commit fa00afc

97 files changed

Lines changed: 3941 additions & 1418 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

crates/api-types/src/pull_request.rs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,21 @@ pub struct PullRequest {
2323
pub merged_at: Option<DateTime<Utc>>,
2424
pub merge_commit_sha: Option<String>,
2525
pub target_branch_name: String,
26+
pub project_id: Uuid,
27+
#[deprecated(note = "use pull_request_issues join table instead")]
2628
pub issue_id: Uuid,
2729
pub workspace_id: Option<Uuid>,
2830
pub created_at: DateTime<Utc>,
2931
pub updated_at: DateTime<Utc>,
3032
}
3133

34+
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
35+
pub struct PullRequestIssue {
36+
pub id: Uuid,
37+
pub pull_request_id: Uuid,
38+
pub issue_id: Uuid,
39+
}
40+
3241
#[derive(Debug, Clone, Deserialize)]
3342
pub struct ListPullRequestsQuery {
3443
pub issue_id: Uuid,
@@ -38,3 +47,35 @@ pub struct ListPullRequestsQuery {
3847
pub struct ListPullRequestsResponse {
3948
pub pull_requests: Vec<PullRequest>,
4049
}
50+
51+
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
52+
pub struct ListPullRequestIssuesResponse {
53+
pub pull_request_issues: Vec<PullRequestIssue>,
54+
}
55+
56+
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
57+
pub struct CreatePullRequestIssueRequest {
58+
/// Optional client-generated ID. If not provided, server generates one.
59+
/// Using client-generated IDs enables stable optimistic updates.
60+
#[ts(optional)]
61+
pub id: Option<Uuid>,
62+
pub issue_id: Uuid,
63+
pub url: String,
64+
pub number: i32,
65+
pub status: PullRequestStatus,
66+
pub merged_at: Option<DateTime<Utc>>,
67+
pub merge_commit_sha: Option<String>,
68+
pub target_branch_name: String,
69+
}
70+
71+
/// Request to update a PR status on the remote server.
72+
#[derive(Debug, Deserialize, Serialize)]
73+
pub struct UpdatePullRequestApiRequest {
74+
pub url: String,
75+
#[serde(skip_serializing_if = "Option::is_none")]
76+
pub status: Option<PullRequestStatus>,
77+
#[serde(skip_serializing_if = "Option::is_none")]
78+
pub merged_at: Option<Option<DateTime<Utc>>>,
79+
#[serde(skip_serializing_if = "Option::is_none")]
80+
pub merge_commit_sha: Option<Option<String>>,
81+
}

crates/db/.sqlx/query-0ee24d51e7557d9d6c9418a06156c03d7dd49dfe938194cd6951942dfd8f179d.json

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/db/.sqlx/query-1085d1f8107c7e16fc2058ef610918760d8d420f0fca97adecd76d698f6f3a51.json

Lines changed: 0 additions & 86 deletions
This file was deleted.

crates/db/.sqlx/query-167c1d13ee37ebe62cd2316feaf6b5354eb26d0a8fc16efb22827a5cde59a60e.json

Lines changed: 0 additions & 20 deletions
This file was deleted.

crates/db/.sqlx/query-1af7a606a64d9662d6edc4fbeaae0d53a4d657a6e29b2561e820085a2d9e3348.json

Lines changed: 86 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/db/.sqlx/query-21c7a9f62322212a5f6b923bb410c25ac06e6a0c857d910d93fb80ab77fc9b35.json

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/db/.sqlx/query-2948ec0606a39ee67bdbaf4f2cf82592448a1d91a66d7d89cf7204f71f706274.json

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/db/.sqlx/query-32c74a54fdd72a6b167583228f2c30944837b7cc29c9cc4acfbb4f047cea7118.json

Lines changed: 86 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)