openmeter / pkg /models /errors.go
Leon4gr45's picture
Upload folder using huggingface_hub (part 9)
fea99b3 verified
Raw
History Blame Contribute Delete
8.36 kB
package models
import (
"errors"
"fmt"
)
// GenericError is an interface that all generic errors must implement.
type GenericError interface {
error
Unwrap() error
}
// NewNamespaceNotFoundError returns a new NamespaceNotFoundError.
func NewNamespaceNotFoundError(namespace string) error {
return &NamespaceNotFoundError{
err: NewGenericNotFoundError(fmt.Errorf("namespace not found: %s", namespace)),
}
}
var _ GenericError = &NamespaceNotFoundError{}
// IsNamespaceNotFoundError returns true if the error is a NamespaceNotFoundError.
type NamespaceNotFoundError struct {
err error
}
func (e *NamespaceNotFoundError) Error() string {
return e.err.Error()
}
// Unwrap returns the wrapped error.
func (e *NamespaceNotFoundError) Unwrap() error {
return e.err
}
// NewGenericNotFoundError returns a new GenericNotFoundError.
func NewGenericNotFoundError(err error) error {
return &GenericNotFoundError{err: err}
}
var _ GenericError = &GenericNotFoundError{}
type GenericNotFoundError struct {
err error
}
func (e *GenericNotFoundError) Error() string {
return fmt.Sprintf("not found error: %s", e.err)
}
func (e *GenericNotFoundError) Unwrap() error {
return e.err
}
// IsGenericNotFoundError returns true if the error is a GenericNotFoundError.
func IsGenericNotFoundError(err error) bool {
if err == nil {
return false
}
var e *GenericNotFoundError
return errors.As(err, &e)
}
// NewGenericConflictError returns a new GenericConflictError.
func NewGenericConflictError(err error) error {
return &GenericConflictError{err: err}
}
var _ GenericError = &GenericConflictError{}
type GenericConflictError struct {
err error
}
func (e *GenericConflictError) Error() string {
return fmt.Sprintf("conflict error: %s", e.err)
}
func (e *GenericConflictError) Unwrap() error {
return e.err
}
// IsGenericConflictError returns true if the error is a GenericConflictError.
func IsGenericConflictError(err error) bool {
if err == nil {
return false
}
var e *GenericConflictError
return errors.As(err, &e)
}
// NewGenericValidationError returns a new GenericForbiddenError.
func NewGenericForbiddenError(err error) error {
return &GenericForbiddenError{err: err}
}
var _ GenericError = &GenericForbiddenError{}
type GenericForbiddenError struct {
err error
}
func (e *GenericForbiddenError) Error() string {
return fmt.Sprintf("forbidden error: %s", e.err)
}
func (e *GenericForbiddenError) Unwrap() error {
return e.err
}
// IsGenericForbiddenError returns true if the error is a GenericForbiddenError.
func IsGenericForbiddenError(err error) bool {
if err == nil {
return false
}
var e *GenericForbiddenError
return errors.As(err, &e)
}
// NewNillableGenericValidationError returns a new GenericValidationError or nil if the error is nil.
// This is useful when someone passes in an errors.Join to the error.
func NewNillableGenericValidationError(err error) error {
if err == nil {
return nil
}
return NewGenericValidationError(err)
}
// NewGenericValidationError returns a new GenericValidationError.
func NewGenericValidationError(err error) error {
return &GenericValidationError{err: err}
}
var _ GenericError = &GenericValidationError{}
// GenericValidationError is returned when a meter is not found.
type GenericValidationError struct {
err error
}
// Error returns the error message.
func (e *GenericValidationError) Error() string {
return fmt.Sprintf("validation error: %s", e.err)
}
// Unwrap returns the wrapped error.
func (e *GenericValidationError) Unwrap() error {
return e.err
}
// IsGenericValidationError returns true if the error is a GenericValidationError.
func IsGenericValidationError(err error) bool {
if err == nil {
return false
}
var e *GenericValidationError
return errors.As(err, &e)
}
// NewGenericNotImplementedError returns a new GenericNotImplementedError.
func NewGenericNotImplementedError(err error) error {
return &GenericNotImplementedError{err: err}
}
var _ GenericError = &GenericNotImplementedError{}
// GenericNotImplementedError is returned when a meter is not found.
type GenericNotImplementedError struct {
err error
}
// Error returns the error message.
func (e *GenericNotImplementedError) Error() string {
return fmt.Sprintf("not implemented error: %s", e.err)
}
// Unwrap returns the wrapped error.
func (e *GenericNotImplementedError) Unwrap() error {
return e.err
}
// IsGenericNotImplementedError returns true if the error is a GenericNotImplementedError.
func IsGenericNotImplementedError(err error) bool {
if err == nil {
return false
}
var e *GenericNotImplementedError
return errors.As(err, &e)
}
// GenericStatusFailedDependencyError
func NewGenericStatusFailedDependencyError(err error) error {
return &GenericStatusFailedDependencyError{err: err}
}
var _ GenericError = &GenericStatusFailedDependencyError{}
type GenericStatusFailedDependencyError struct {
err error
}
func (e *GenericStatusFailedDependencyError) Error() string {
return fmt.Sprintf("status failed dependency error: %s", e.err)
}
func (e *GenericStatusFailedDependencyError) Unwrap() error {
return e.err
}
func IsGenericStatusFailedDependencyError(err error) bool {
if err == nil {
return false
}
var e *GenericStatusFailedDependencyError
return errors.As(err, &e)
}
// GenericPreConditionFailedError
func NewGenericPreConditionFailedError(err error) error {
return &GenericPreConditionFailedError{err: err}
}
var _ GenericError = &GenericPreConditionFailedError{}
type GenericPreConditionFailedError struct {
err error
}
func (e *GenericPreConditionFailedError) Error() string {
return fmt.Sprintf("precondition failed error: %s", e.err)
}
func (e *GenericPreConditionFailedError) Unwrap() error {
return e.err
}
func IsGenericPreConditionFailedError(err error) bool {
if err == nil {
return false
}
var e *GenericPreConditionFailedError
return errors.As(err, &e)
}
// GenericUnauthorizedError
func NewGenericUnauthorizedError(err error) error {
return &GenericUnauthorizedError{err: err}
}
var _ GenericError = &GenericUnauthorizedError{}
type GenericUnauthorizedError struct {
err error
}
func (e *GenericUnauthorizedError) Error() string {
return fmt.Sprintf("unauthorized error: %s", e.err)
}
func (e *GenericUnauthorizedError) Unwrap() error {
return e.err
}
func IsGenericUnauthorizedError(err error) bool {
if err == nil {
return false
}
var e *GenericUnauthorizedError
return errors.As(err, &e)
}
// ComponentName is the name of an internal or external component/service the error is related to or originated from.
type ComponentName string
// ErrorCode is the machine-readable error code.
type ErrorCode string
const (
ErrorSeverityCritical ErrorSeverity = iota
ErrorSeverityWarning
)
// ErrorSeverity describes the severity of an error.
type ErrorSeverity int8
func (s ErrorSeverity) String() string {
switch s {
case ErrorSeverityCritical:
return "critical"
case ErrorSeverityWarning:
return "warning"
default:
return "invalid"
}
}
func (s ErrorSeverity) Values() []string {
return []string{
ErrorSeverityCritical.String(),
ErrorSeverityWarning.String(),
}
}
type fieldPrefixedWrapper struct {
prefix *FieldDescriptor
err error
}
func (p fieldPrefixedWrapper) Error() string {
if p.prefix != nil {
return p.prefix.String() + ": " + p.err.Error()
}
return p.err.Error()
}
func (p fieldPrefixedWrapper) Unwrap() error {
return p.err
}
// ErrorWithFieldPrefix wraps an error with a field prefix. It returns nil if err is also nil.
func ErrorWithFieldPrefix(prefix *FieldDescriptor, err error) error {
if err == nil {
return nil
}
return fieldPrefixedWrapper{prefix: prefix, err: err}
}
type componentWrapper struct {
component ComponentName
err error
}
func (e componentWrapper) Error() string {
if e.component != "" {
return string(e.component) + ": " + e.err.Error()
}
return e.err.Error()
}
func (e componentWrapper) Unwrap() error {
return e.err
}
// ErrorWithComponent wraps an error with a component name. It returns nil if err is also nil.
// This can be used to add context to an error when we are crossing service boundaries.
func ErrorWithComponent(component ComponentName, err error) error {
if err == nil {
return nil
}
return componentWrapper{component: component, err: err}
}