Centralize snapshot review selection in the store
This commit is contained in:
@@ -41,13 +41,13 @@ func (m *Manager) MergeAfterReview(ctx context.Context, task api.Task, user api.
|
||||
if err != nil {
|
||||
return api.Task{}, err
|
||||
}
|
||||
reviews, err := m.store.ListReviews(ctx, task.Id)
|
||||
reviews, err := m.store.SnapshotReviews(ctx, task.Id, latest.N)
|
||||
if err != nil {
|
||||
return api.Task{}, err
|
||||
}
|
||||
reviewID := ""
|
||||
for _, r := range reviews {
|
||||
if r.SnapshotN == latest.N && r.State == api.ReviewStateRunning {
|
||||
if r.State == api.ReviewStateRunning {
|
||||
reviewID = r.Id
|
||||
}
|
||||
}
|
||||
@@ -99,7 +99,7 @@ func (m *Manager) reviewFinished(reviewID string, deliver bool) {
|
||||
if m.advanceReviews(ctx, r) {
|
||||
return
|
||||
}
|
||||
reviews, err := m.snapshotReviews(ctx, r.TaskId, r.SnapshotN)
|
||||
reviews, err := m.store.SnapshotReviews(ctx, r.TaskId, r.SnapshotN)
|
||||
if err != nil {
|
||||
slog.Error("list snapshot reviews", "task", r.TaskId, "err", err)
|
||||
return
|
||||
|
||||
@@ -201,7 +201,7 @@ func (m *Manager) tryPromptReady(ctx context.Context, taskID string, fromReview
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
reviews, err := m.snapshotReviews(ctx, taskID, latest.N)
|
||||
reviews, err := m.store.SnapshotReviews(ctx, taskID, latest.N)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -164,20 +164,6 @@ func pendingReviewStages(def api.WorkflowDefinition, stage string, byStage map[s
|
||||
return pending
|
||||
}
|
||||
|
||||
func (m *Manager) snapshotReviews(ctx context.Context, taskID string, n int) ([]api.Review, error) {
|
||||
reviews, err := m.store.ListReviews(ctx, taskID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
out := []api.Review{}
|
||||
for _, r := range reviews {
|
||||
if r.SnapshotN == n {
|
||||
out = append(out, r)
|
||||
}
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (m *Manager) reviewDir(projectID, reviewID string) string {
|
||||
return filepath.Join(m.worktreeRoot, projectID, "review-"+reviewID)
|
||||
}
|
||||
@@ -596,13 +582,13 @@ func (m *Manager) respondToFindingTool(l *live) mcp.Tool {
|
||||
if reason == "" {
|
||||
return "", fmt.Errorf("%w: reason must not be empty", ErrInvalid)
|
||||
}
|
||||
reviews, err := m.store.ListReviews(ctx, l.taskID)
|
||||
reviews, err := m.store.SnapshotReviews(ctx, l.taskID, args.Snapshot)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
reviewID := ""
|
||||
for _, r := range reviews {
|
||||
if r.SnapshotN == args.Snapshot && r.Stage == args.Reviewer && r.State == api.ReviewStateDone {
|
||||
if r.Stage == args.Reviewer && r.State == api.ReviewStateDone {
|
||||
reviewID = r.Id
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,6 +69,14 @@ func (s *Store) ListReviews(ctx context.Context, taskID string) ([]api.Review, e
|
||||
return scanReviews(rows)
|
||||
}
|
||||
|
||||
func (s *Store) SnapshotReviews(ctx context.Context, taskID string, n int) ([]api.Review, error) {
|
||||
rows, err := s.db.QueryContext(ctx, `SELECT `+reviewColumns+` FROM reviews WHERE task_id = ? AND snapshot_n = ? ORDER BY created_at`, taskID, n)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return scanReviews(rows)
|
||||
}
|
||||
|
||||
func (s *Store) RunningReviews(ctx context.Context) ([]api.Review, error) {
|
||||
rows, err := s.db.QueryContext(ctx, `SELECT `+reviewColumns+` FROM reviews WHERE state = ? ORDER BY created_at`, string(api.ReviewStateRunning))
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user