25 lines
683 B
Go
25 lines
683 B
Go
|
|
package errs
|
||
|
|
|
||
|
|
import (
|
||
|
|
"fmt"
|
||
|
|
|
||
|
|
"gateway/internal/library/errors/code"
|
||
|
|
)
|
||
|
|
|
||
|
|
// ErrInvalidCode is returned when scope, category, or detail is out of range.
|
||
|
|
var ErrInvalidCode = fmt.Errorf("invalid error code components")
|
||
|
|
|
||
|
|
func validateComponents(scope code.Scope, category code.Category, detail code.Detail) error {
|
||
|
|
if !scope.Valid() {
|
||
|
|
return fmt.Errorf("%w: scope %d exceeds max %d", ErrInvalidCode, scope, code.MaxScope)
|
||
|
|
}
|
||
|
|
if !category.Valid() {
|
||
|
|
return fmt.Errorf("%w: category %d exceeds max %d", ErrInvalidCode, category, code.MaxCategory)
|
||
|
|
}
|
||
|
|
if !detail.Valid() {
|
||
|
|
return fmt.Errorf("%w: detail %d exceeds max %d", ErrInvalidCode, detail, code.MaxDetail)
|
||
|
|
}
|
||
|
|
|
||
|
|
return nil
|
||
|
|
}
|