feat: 实现公共工具包,包括日志、错误处理、数据库和缓存

This commit is contained in:
fish
2026-03-28 20:00:43 +08:00
parent be24b465b1
commit d0dbc4a3a7
5 changed files with 388 additions and 0 deletions

View 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)
}