mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat(gitsync): enrich PR status with author, base branch, review info (#23038)
## Summary Adds 7 new fields to the PR status stored by gitsync, all sourced from the existing GitHub API calls (**zero additional HTTP requests**): | Field | Source | Purpose | |---|---|---| | `author_login` | `pull.user.login` | PR author username | | `author_avatar_url` | `pull.user.avatar_url` | PR author avatar for UI | | `base_branch` | `pull.base.ref` | Target branch (e.g. `main`) | | `pr_number` | `pull.number` | Explicit PR number | | `commits` | `pull.commits` | Number of commits in PR | | `approved` | Derived from reviews | True when ≥1 approved, no outstanding changes requested | | `reviewer_count` | Derived from reviews | Distinct reviewers with a decisive state | ## Changes - **`gitprovider/gitprovider.go`**: Added 7 fields to `PRStatus` struct. - **`gitprovider/github.go`**: Expanded the anonymous struct in `FetchPullRequestStatus` to decode new JSON fields. Replaced `hasOutstandingChangesRequested()` with `summarizeReviews()` returning a `reviewStats` struct with `changesRequested`, `approved`, and `reviewerCount`. - **Migration 000434**: Adds 7 columns to `chat_diff_statuses`. - **`queries/chats.sql`**: Updated `UpsertChatDiffStatus` INSERT/VALUES/ON CONFLICT. - **`gitsync/gitsync.go`**: Maps new `PRStatus` fields into upsert params. - **`gitsync/worker.go`**: Maps new columns in row-to-model converter. - **`codersdk/chats.go`**: Added fields to SDK `ChatDiffStatus` type. - **`coderd/chats.go`**: Maps new DB fields in `convertChatDiffStatus()`. - Auto-generated: `models.go`, `queries.sql.go`, `dump.sql`, `typesGenerated.ts`.
This commit is contained in:
@@ -316,6 +316,13 @@ func (r *Refresher) refreshOne(
|
||||
Additions: status.DiffStats.Additions,
|
||||
Deletions: status.DiffStats.Deletions,
|
||||
ChangedFiles: status.DiffStats.ChangedFiles,
|
||||
AuthorLogin: sql.NullString{String: status.AuthorLogin, Valid: status.AuthorLogin != ""},
|
||||
AuthorAvatarUrl: sql.NullString{String: status.AuthorAvatarURL, Valid: status.AuthorAvatarURL != ""},
|
||||
BaseBranch: sql.NullString{String: status.BaseBranch, Valid: status.BaseBranch != ""},
|
||||
PrNumber: sql.NullInt32{Int32: int32(status.PRNumber), Valid: true},
|
||||
Commits: sql.NullInt32{Int32: status.Commits, Valid: true},
|
||||
Approved: sql.NullBool{Bool: status.Approved, Valid: true},
|
||||
ReviewerCount: sql.NullInt32{Int32: status.ReviewerCount, Valid: true},
|
||||
RefreshedAt: now,
|
||||
StaleAt: now.Add(DiffStatusTTL),
|
||||
}
|
||||
|
||||
@@ -140,12 +140,21 @@ func chatDiffStatusFromRow(row database.AcquireStaleChatDiffStatusesRow) databas
|
||||
Additions: row.Additions,
|
||||
Deletions: row.Deletions,
|
||||
ChangedFiles: row.ChangedFiles,
|
||||
AuthorLogin: row.AuthorLogin,
|
||||
AuthorAvatarUrl: row.AuthorAvatarUrl,
|
||||
BaseBranch: row.BaseBranch,
|
||||
PrNumber: row.PrNumber,
|
||||
Commits: row.Commits,
|
||||
Approved: row.Approved,
|
||||
ReviewerCount: row.ReviewerCount,
|
||||
RefreshedAt: row.RefreshedAt,
|
||||
StaleAt: row.StaleAt,
|
||||
CreatedAt: row.CreatedAt,
|
||||
UpdatedAt: row.UpdatedAt,
|
||||
GitBranch: row.GitBranch,
|
||||
GitRemoteOrigin: row.GitRemoteOrigin,
|
||||
PullRequestTitle: row.PullRequestTitle,
|
||||
PullRequestDraft: row.PullRequestDraft,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user