Skip to content

feat: structured error categories for external failures#1

Open
jaydenkalu wants to merge 1 commit into
mainfrom
issues/493-structured-error-categories
Open

feat: structured error categories for external failures#1
jaydenkalu wants to merge 1 commit into
mainfrom
issues/493-structured-error-categories

Conversation

@jaydenkalu

Copy link
Copy Markdown
Owner

Closes AnnabelJoe#493

Summary

Adds a typed AppError system so API routes and the job processor return consistent, actionable error responses.

Changes

  • src/lib/errors.ts (new): AppError, ErrorCategory enum, errorBody() helper
    • Categories: STELLAR_TIMEOUT, STELLAR_CIRCUIT, STELLAR_RPC, DB_QUERY, DB_CONSTRAINT, VALIDATION, UNAUTHORIZED, INTERNAL
    • Each error carries httpStatus and retriable flag so clients can distinguish transient vs fatal
  • src/lib/stellar.ts: throws AppError instead of raw errors; replaces console.error with logger.warn/error including error category
  • src/lib/queue.ts: logs category field on anchor/mint job failures
  • src/app/api/readings/route.ts: DB insert error uses AppError(DB_QUERY) + errorBody()

API response shape

{ "error": "...", "code": "STELLAR_TIMEOUT", "retriable": true }

Testing

  • TypeScript type-check passes (zero new errors)
  • Existing test suite: no regressions introduced

…oe#493)

- Add AppError class with category, httpStatus, retriable properties
- Add ErrorCategory enum: STELLAR_TIMEOUT, STELLAR_CIRCUIT, STELLAR_RPC,
  DB_QUERY, DB_CONSTRAINT, VALIDATION, UNAUTHORIZED, INTERNAL
- Add errorBody() helper for consistent {error, code, retriable} API responses
- Update stellar.ts: use AppError instead of raw errors, add structured logging
- Update queue.ts: log error category on job failures for observability
- Update readings route: use AppError/errorBody for DB errors

Closes AnnabelJoe#493
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add structured error categories for external failures

1 participant