Skip to content

[Sprint] Issues: Refactor handlers to use ObjectId and return Result<T> #81

@mpaulosky

Description

@mpaulosky

Problem

Issue handlers (Get, List, Create, Update, Delete, UpdateStatus) do not return Result to the API layer. They throw exceptions instead of returning typed results. They also do runtime ObjectId.TryParse() which should move to the validation layer (handled by Issue #1).

Depends On

Depends on: Foundation issue (standardize ObjectId in Shared commands/queries)

Files to Modify

  • src/Api/Handlers/Issues/GetIssueHandler.cs — return Task<Result>
  • src/Api/Handlers/Issues/ListIssuesHandler.cs — return Task<Result<IReadOnlyList>>
  • src/Api/Handlers/Issues/CreateIssueHandler.cs — return Task<Result>
  • src/Api/Handlers/Issues/UpdateIssueHandler.cs — return Task<Result>
  • src/Api/Handlers/Issues/DeleteIssueHandler.cs — return Task<Result>
  • src/Api/Handlers/Issues/UpdateIssueStatusHandler.cs — return Task<Result>
  • src/Api/Handlers/Issues/IssueEndpoints.cs — map Result → HTTP responses (200/201/404/409/500)

Acceptance Criteria

  • All 6 Issue handlers return Task<Result>
  • No ObjectId.TryParse() calls in handler bodies (parsing done by validator)
  • IssueEndpoints.cs maps Result success → 200/201, Result failure → appropriate HTTP status
  • 404 returned when issue not found (was: null returned or exception thrown)
  • Solution builds with zero errors and zero warnings

Metadata

Metadata

Assignees

No one assigned

    Labels

    go:needs-researchNeeds investigationsquadSquad triage inbox — Lead will assign to a membersquad:legolasAssigned to Legolas (Frontend Dev)squad:samAssigned to Sam (Backend Dev)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions