hyf

Context-aware query service for Radroots
git clone https://radroots.dev/git/hyf.git
Log | Files | Refs | README | LICENSE

errors.mojo (1951B)


      1 from std.collections import Optional
      2 
      3 from json import Value
      4 
      5 from hyf_core.provenance import CoreResponseMeta
      6 
      7 
      8 @fieldwise_init
      9 struct CoreError(Copyable, Movable):
     10     var code: String
     11     var message: String
     12     var retryable: Bool
     13 
     14 
     15 @fieldwise_init
     16 struct CapabilitySuccess(Copyable, Movable):
     17     var output: Value
     18     var meta: Optional[CoreResponseMeta]
     19 
     20 
     21 @fieldwise_init
     22 struct CapabilityFailure(Copyable, Movable):
     23     var error: CoreError
     24 
     25 
     26 @fieldwise_init
     27 struct CapabilityResult(Copyable, Movable):
     28     var success: Optional[CapabilitySuccess]
     29     var failure: Optional[CapabilityFailure]
     30 
     31 
     32 def _copy_core_error(error: CoreError) -> CoreError:
     33     return CoreError(
     34         code=String(error.code),
     35         message=String(error.message),
     36         retryable=error.retryable,
     37     )
     38 
     39 
     40 def successful_capability(
     41     output: Value, meta: Optional[CoreResponseMeta] = None
     42 ) -> CapabilityResult:
     43     return CapabilityResult(
     44         success=CapabilitySuccess(output=output.copy(), meta=meta.copy()),
     45         failure=None,
     46     )
     47 
     48 
     49 def failed_capability(error: CoreError) -> CapabilityResult:
     50     return CapabilityResult(
     51         success=None,
     52         failure=CapabilityFailure(error=_copy_core_error(error)),
     53     )
     54 
     55 
     56 def invalid_context_error(message: String) -> CoreError:
     57     return CoreError(code="invalid_context", message=message, retryable=False)
     58 
     59 
     60 def invalid_input_error(message: String) -> CoreError:
     61     return CoreError(code="invalid_input", message=message, retryable=False)
     62 
     63 
     64 def capability_not_implemented_error(capability: String) -> CoreError:
     65     return CoreError(
     66         code="capability_not_implemented",
     67         message="core capability '" + capability + "' is not implemented yet",
     68         retryable=False,
     69     )
     70 
     71 
     72 def backend_unavailable_error(backend: String) -> CoreError:
     73     return CoreError(
     74         code="backend_unavailable",
     75         message="backend '" + backend + "' is unavailable",
     76         retryable=True,
     77     )