This commit is contained in:
antanst
2025-10-09 17:43:23 +03:00
parent 2ead66f012
commit 3a5835fc42
54 changed files with 5881 additions and 120 deletions

94
lib/apperrors/errors.go Normal file
View File

@@ -0,0 +1,94 @@
package apperrors
import "errors"
type ErrorType int
const (
ErrorOther ErrorType = iota
ErrorNetwork
ErrorGemini
)
type AppError struct {
Type ErrorType
StatusCode int
Fatal bool
Err error
}
func (e *AppError) Error() string {
if e == nil || e.Err == nil {
return ""
}
return e.Err.Error()
}
func (e *AppError) Unwrap() error {
if e == nil {
return nil
}
return e.Err
}
func NewError(err error) error {
return &AppError{
Type: ErrorOther,
StatusCode: 0,
Fatal: false,
Err: err,
}
}
func NewFatalError(err error) error {
return &AppError{
Type: ErrorOther,
StatusCode: 0,
Fatal: true,
Err: err,
}
}
func NewNetworkError(err error) error {
return &AppError{
Type: ErrorNetwork,
StatusCode: 0,
Fatal: false,
Err: err,
}
}
func NewGeminiError(err error, statusCode int) error {
return &AppError{
Type: ErrorGemini,
StatusCode: statusCode,
Fatal: false,
Err: err,
}
}
func GetStatusCode(err error) int {
var appError *AppError
if errors.As(err, &appError) && appError != nil {
return appError.StatusCode
}
return 0
}
func IsGeminiError(err error) bool {
var appError *AppError
if errors.As(err, &appError) && appError != nil {
if appError.Type == ErrorGemini {
return true
}
}
return false
}
func IsFatal(err error) bool {
var appError *AppError
if errors.As(err, &appError) && appError != nil {
return appError.Fatal
}
return false
}