feat: 实现公共工具包,包括日志、错误处理、数据库和缓存
This commit is contained in:
96
backend/shared/pkg/errors/errors.go
Normal file
96
backend/shared/pkg/errors/errors.go
Normal file
@@ -0,0 +1,96 @@
|
||||
package errors
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// 错误类型定义
|
||||
var (
|
||||
ErrNotFound = errors.New("resource not found")
|
||||
ErrInvalidInput = errors.New("invalid input")
|
||||
ErrInternalServer = errors.New("internal server error")
|
||||
ErrUnauthorized = errors.New("unauthorized")
|
||||
ErrForbidden = errors.New("forbidden")
|
||||
ErrConflict = errors.New("conflict")
|
||||
ErrBadRequest = errors.New("bad request")
|
||||
ErrTimeout = errors.New("timeout")
|
||||
ErrServiceUnavailable = errors.New("service unavailable")
|
||||
)
|
||||
|
||||
// AppError 应用错误结构
|
||||
type AppError struct {
|
||||
Err error
|
||||
Message string
|
||||
Code int
|
||||
}
|
||||
|
||||
func (e *AppError) Error() string {
|
||||
if e.Message != "" {
|
||||
return e.Message
|
||||
}
|
||||
return e.Err.Error()
|
||||
}
|
||||
|
||||
func (e *AppError) Unwrap() error {
|
||||
return e.Err
|
||||
}
|
||||
|
||||
// NewAppError 创建新的应用错误
|
||||
func NewAppError(err error, message string, code int) *AppError {
|
||||
return &AppError{
|
||||
Err: err,
|
||||
Message: message,
|
||||
Code: code,
|
||||
}
|
||||
}
|
||||
|
||||
// WrapError 包装错误
|
||||
func WrapError(err error, message string) error {
|
||||
return fmt.Errorf("%s: %w", message, err)
|
||||
}
|
||||
|
||||
// IsNotFound 检查是否为资源未找到错误
|
||||
func IsNotFound(err error) bool {
|
||||
return errors.Is(err, ErrNotFound)
|
||||
}
|
||||
|
||||
// IsInvalidInput 检查是否为无效输入错误
|
||||
func IsInvalidInput(err error) bool {
|
||||
return errors.Is(err, ErrInvalidInput)
|
||||
}
|
||||
|
||||
// IsInternalServer 检查是否为内部服务器错误
|
||||
func IsInternalServer(err error) bool {
|
||||
return errors.Is(err, ErrInternalServer)
|
||||
}
|
||||
|
||||
// IsUnauthorized 检查是否为未授权错误
|
||||
func IsUnauthorized(err error) bool {
|
||||
return errors.Is(err, ErrUnauthorized)
|
||||
}
|
||||
|
||||
// IsForbidden 检查是否为禁止访问错误
|
||||
func IsForbidden(err error) bool {
|
||||
return errors.Is(err, ErrForbidden)
|
||||
}
|
||||
|
||||
// IsConflict 检查是否为冲突错误
|
||||
func IsConflict(err error) bool {
|
||||
return errors.Is(err, ErrConflict)
|
||||
}
|
||||
|
||||
// IsBadRequest 检查是否为请求错误
|
||||
func IsBadRequest(err error) bool {
|
||||
return errors.Is(err, ErrBadRequest)
|
||||
}
|
||||
|
||||
// IsTimeout 检查是否为超时错误
|
||||
func IsTimeout(err error) bool {
|
||||
return errors.Is(err, ErrTimeout)
|
||||
}
|
||||
|
||||
// IsServiceUnavailable 检查是否为服务不可用错误
|
||||
func IsServiceUnavailable(err error) bool {
|
||||
return errors.Is(err, ErrServiceUnavailable)
|
||||
}
|
||||
Reference in New Issue
Block a user