ash-project / ash-project/ash

Add an additional error class to expose application and/or temporary errors

Open
#1,071 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Elixir
Stars
2.5k
Forks
422
Avg merge
23h 26m
Merged PRs (30d)
46

Description

**Is your feature request related to a problem? Please describe.**
Currently we have:
```
forbidden: Ash.Error.Forbidden
invalid: Ash.Error.Invalid
framework: Ash.Error.Framework
unknown: Ash.Error.Unknown
```

but once you start adding your own Application errors using Splode there should be an additional class between invalid and framework, something like temporary or a generic application that can apply to things like:
- I'm querying an external API and it's currently unavailable
- You're being rate limited

`invalid` seems to express a condition that is true always, and `framework` expresses something that is internal and where the user has no influence. There should be something that expresses "Maybe try in a bit ¯\_(ツ)_/¯"

**Describe the solution you'd like**
Add another error class that can be used from this kind of errors.

**Describe alternatives you've considered**
@zachdaniel mentioned "a thing you can do with splice where you can write your own splode with your own error classes, and use it on the error returned" but I don't have more context about this

Contributor guide

Open the contributing guide

Research direction

Start by reading the existing Ash.Error.Forbidden, Ash.Error.Invalid, Ash.Error.Framework, and Ash.Error.Unknown classes and the referenced Splode integration. Clarify whether the requested category is application, temporary, or both, then define the expected classification and usage before implementing it; done means the new class can represent the stated external-API and rate-limit cases.

Written by the indexing model from the issue text.

Assessment

Tech stack
elixir
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.