+186
−85
+116
−4
Loading
Expand `ListWorkItemsOptions` to support most available GraphQL query parameters for work items, enabling full-featured filtering, sorting, searching, and pagination capabilities. Changes: - Add 30+ filter fields including assignees, labels, milestones, iterations, health status, CRM associations, and reactions - Add time-based filters (created, updated, closed, due dates) - Add sorting, search, and pagination parameters - Implement generic `gqlVariables()` function using reflection to extract GraphQL variable definitions from struct tags - Replace manual field mapping with struct tag annotations using format `gql:"name Type"` - Add `variablesGQL` helper type with `Definitions()` and `Arguments()` methods for template rendering The new approach uses reflection to automatically generate GraphQL query variables from struct fields, eliminating the need to maintain separate field type mappings. Each field is annotated with its GraphQL name and type via struct tags (e.g., `gql:"state IssuableState"`). This refactoring makes it trivial to add new query parameters in the future - simply add the field to the struct with appropriate tags. Technical details: - `gqlVariables()` validates struct tags and only includes non-zero fields - Template now uses `variablesGQL.Definitions()` for query signature - Template uses `variablesGQL.Arguments()` for field parameters - Comprehensive test coverage added for all new fields