fix: code review fixes for Transaction API and Search (epic bd-8bq)

- Add safe type assertions in applyUpdatesToIssue (bd-4gs)
- Add --sort and --reverse flags to bd search (bd-4f6)
- Add test cases for SearchIssues priority range, date range, IDs (bd-ew5)
- Handle errors from GetLabelsForIssues in search.go (bd-lce)
- Standardize error wrapping to fmt.Errorf pattern (bd-7kl)
- Extract shared scanIssueRow helper function (bd-ajf)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Steve Yegge
2025-11-24 20:44:58 -08:00
parent 82d7302dae
commit a6990a85ba
3 changed files with 322 additions and 117 deletions

View File

@@ -27,7 +27,9 @@ Examples:
bd search "bd-5q" # Search by partial ID
bd search "security" --priority-min 0 --priority-max 2
bd search "bug" --created-after 2025-01-01
bd search "refactor" --updated-after 2025-01-01 --priority-min 1`,
bd search "refactor" --updated-after 2025-01-01 --priority-min 1
bd search "bug" --sort priority
bd search "task" --sort created --reverse`,
Run: func(cmd *cobra.Command, args []string) {
// Get query from args or --query flag
queryFlag, _ := cmd.Flags().GetString("query")
@@ -70,6 +72,10 @@ Examples:
priorityMinStr, _ := cmd.Flags().GetString("priority-min")
priorityMaxStr, _ := cmd.Flags().GetString("priority-max")
// Sort flags
sortBy, _ := cmd.Flags().GetString("sort")
reverse, _ := cmd.Flags().GetBool("reverse")
// Normalize labels
labels = util.NormalizeLabels(labels)
labelsAny = util.NormalizeLabels(labelsAny)
@@ -279,8 +285,16 @@ Examples:
for i, issue := range issues {
issueIDs[i] = issue.ID
}
labelsMap, _ := store.GetLabelsForIssues(ctx, issueIDs)
depCounts, _ := store.GetDependencyCounts(ctx, issueIDs)
labelsMap, err := store.GetLabelsForIssues(ctx, issueIDs)
if err != nil {
fmt.Fprintf(os.Stderr, "Warning: failed to get labels: %v\n", err)
labelsMap = make(map[string][]string)
}
depCounts, err := store.GetDependencyCounts(ctx, issueIDs)
if err != nil {
fmt.Fprintf(os.Stderr, "Warning: failed to get dependency counts: %v\n", err)
depCounts = make(map[string]*types.DependencyCounts)
}
// Populate labels
for _, issue := range issues {
@@ -382,5 +396,9 @@ func init() {
searchCmd.Flags().String("priority-min", "", "Filter by minimum priority (inclusive, 0-4 or P0-P4)")
searchCmd.Flags().String("priority-max", "", "Filter by maximum priority (inclusive, 0-4 or P0-P4)")
// Sort flags
searchCmd.Flags().String("sort", "", "Sort by field: priority, created, updated, closed, status, id, title, type, assignee")
searchCmd.Flags().BoolP("reverse", "r", false, "Reverse sort order")
rootCmd.AddCommand(searchCmd)
}