Skip to content

Commit 5e51150

Browse files
refactor(app): reuse status snapshot in wait and doctor
Co-authored-by: Andrew <andrewxhill@gmail.com>
1 parent 7f7b87d commit 5e51150

3 files changed

Lines changed: 24 additions & 25 deletions

File tree

internal/app/repo.go

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -831,22 +831,18 @@ Flags:
831831
if record, _, err := ensureRepositoryRecord(ctx, store, repoRoot, cfg); err == nil {
832832
repoRecord = record
833833
hasRepoRecord = true
834-
queue, err := loadQueueSnapshot(store, record.ID)
835-
if err != nil {
836-
return err
837-
}
838-
report.UnfinishedQueueItems = queue.UnfinishedItems
839834
}
840835
}
841836

842837
lockManager := state.NewLockManager(repoRoot, layout.GitDir)
843838
result := doctorResult{HealthReport: report, RootCheckout: rootInfo}
844839
if hasRepoRecord {
845-
queue, err := loadQueueSnapshot(store, repoRecord.ID)
840+
snapshot, err := loadRepoStatusSnapshot(ctx, store, repoRecord, cfg, 0)
846841
if err != nil {
847842
return err
848843
}
849-
result.QueueSummary = queue.Summary
844+
result.UnfinishedQueueItems = snapshot.UnfinishedQueueItems
845+
result.QueueSummary = snapshot.QueueSummary
850846
}
851847
if fix {
852848
applied, skipped, err := runDoctorFix(ctx, engine, cfg, lockManager, store, repoRecord, hasRepoRecord)
@@ -865,12 +861,12 @@ Flags:
865861
result.HealthReport = report
866862
result.RootCheckout = rootInfo
867863
if store.Exists() && hasRepoRecord {
868-
queue, err := loadQueueSnapshot(store, repoRecord.ID)
864+
snapshot, err := loadRepoStatusSnapshot(ctx, store, repoRecord, cfg, 0)
869865
if err != nil {
870866
return err
871867
}
872-
result.UnfinishedQueueItems = queue.UnfinishedItems
873-
result.QueueSummary = queue.Summary
868+
result.UnfinishedQueueItems = snapshot.UnfinishedQueueItems
869+
result.QueueSummary = snapshot.QueueSummary
874870
}
875871
}
876872
result.QueueBlocked = !result.ProtectedBranchClean || result.MainWorktreeDetached || (result.MainWorktreeBranch != "" && result.MainWorktreeBranch != result.ProtectedBranch)

internal/app/status_snapshot.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ type repoStatusSnapshot struct {
1212
ExecutionEstimate executionEstimate
1313
Counts queueCounts
1414
QueueSummary queueSummary
15+
UnfinishedQueueItems []string
1516
Alerts []string
1617
LatestSubmission *statusSubmission
1718
LatestPublish *statusPublish
@@ -52,13 +53,14 @@ func loadRepoStatusSnapshot(ctx context.Context, store state.Store, repoRecord s
5253
}
5354

5455
snapshot := repoStatusSnapshot{
55-
ExecutionEstimate: estimate,
56-
Counts: queue.Counts,
57-
QueueSummary: queue.Summary,
58-
Alerts: buildStatusAlerts(queue.Counts),
59-
ActiveSubmissions: activeSubmissions(enrichedSubmissions),
60-
ActivePublishes: activePublishes(requests),
61-
RecentEvents: events,
56+
ExecutionEstimate: estimate,
57+
Counts: queue.Counts,
58+
QueueSummary: queue.Summary,
59+
UnfinishedQueueItems: queue.UnfinishedItems,
60+
Alerts: buildStatusAlerts(queue.Counts),
61+
ActiveSubmissions: activeSubmissions(enrichedSubmissions),
62+
ActivePublishes: activePublishes(requests),
63+
RecentEvents: events,
6264
}
6365

6466
lockManager := state.NewLockManager(repoRecord.CanonicalPath, stateGitDirFromStorePath(store.Path))

internal/app/wait.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010

1111
"github.com/recallnet/mainline/internal/domain"
1212
"github.com/recallnet/mainline/internal/git"
13+
"github.com/recallnet/mainline/internal/policy"
1314
"github.com/recallnet/mainline/internal/state"
1415
)
1516

@@ -204,7 +205,7 @@ func waitForIntegratedSubmission(queued queuedSubmission, timeout time.Duration,
204205
ProtectedBranch: queued.Config.Repo.ProtectedBranch,
205206
SubmissionStatus: queued.Submission.Status,
206207
}
207-
defer populateIntegrationWaitQueueSummary(queued.Store, queued.RepoRecord.ID, &result)
208+
defer populateIntegrationWaitQueueSummary(context.Background(), queued.Store, queued.RepoRecord, queued.Config, &result)
208209
mainEngine := git.NewEngine(queued.Config.Repo.MainWorktree)
209210

210211
ticker := time.NewTicker(pollInterval)
@@ -340,7 +341,7 @@ func waitForSubmissionTarget(queued queuedSubmission, target waitTarget, timeout
340341
ProtectedBranch: queued.Config.Repo.ProtectedBranch,
341342
SubmissionStatus: queued.Submission.Status,
342343
}
343-
defer populateSubmissionWaitQueueSummary(queued.Store, queued.RepoRecord.ID, &result)
344+
defer populateSubmissionWaitQueueSummary(context.Background(), queued.Store, queued.RepoRecord, queued.Config, &result)
344345
mainEngine := git.NewEngine(queued.Config.Repo.MainWorktree)
345346
ticker := time.NewTicker(pollInterval)
346347
defer ticker.Stop()
@@ -513,24 +514,24 @@ func waitForSubmissionTarget(queued queuedSubmission, target waitTarget, timeout
513514
}
514515
}
515516

516-
func populateIntegrationWaitQueueSummary(store state.Store, repoID int64, result *integrationWaitResult) {
517+
func populateIntegrationWaitQueueSummary(ctx context.Context, store state.Store, repoRecord state.RepositoryRecord, cfg policy.File, result *integrationWaitResult) {
517518
if result == nil {
518519
return
519520
}
520-
snapshot, err := loadQueueSnapshot(store, repoID)
521+
snapshot, err := loadRepoStatusSnapshot(ctx, store, repoRecord, cfg, 0)
521522
if err != nil {
522523
return
523524
}
524-
result.QueueSummary = snapshot.Summary
525+
result.QueueSummary = snapshot.QueueSummary
525526
}
526527

527-
func populateSubmissionWaitQueueSummary(store state.Store, repoID int64, result *submissionWaitResult) {
528+
func populateSubmissionWaitQueueSummary(ctx context.Context, store state.Store, repoRecord state.RepositoryRecord, cfg policy.File, result *submissionWaitResult) {
528529
if result == nil {
529530
return
530531
}
531-
snapshot, err := loadQueueSnapshot(store, repoID)
532+
snapshot, err := loadRepoStatusSnapshot(ctx, store, repoRecord, cfg, 0)
532533
if err != nil {
533534
return
534535
}
535-
result.QueueSummary = snapshot.Summary
536+
result.QueueSummary = snapshot.QueueSummary
536537
}

0 commit comments

Comments
 (0)