- 新增 domain 层:model、provider、route、stats 实体 - 新增 service 层:models、providers、routing、stats 业务逻辑 - 新增 repository 层:models、providers、stats 数据访问 - 新增 pkg 工具包:errors、logger、validator - 新增中间件:CORS、logging、recovery、request ID - 新增数据库迁移:初始 schema 和索引 - 新增单元测试和集成测试 - 新增规范文档:config-management、database-migration、error-handling、layered-architecture、middleware-system、request-validation、structured-logging、test-coverage - 移除 config 子包和 model_router(已迁移至分层架构)
43 lines
993 B
Go
43 lines
993 B
Go
package errors
|
|
|
|
// Wrap wraps an error with cause
|
|
func Wrap(err *AppError, cause error) *AppError {
|
|
return &AppError{
|
|
Code: err.Code,
|
|
Message: err.Message,
|
|
HTTPStatus: err.HTTPStatus,
|
|
Cause: cause,
|
|
}
|
|
}
|
|
|
|
// WithContext adds context to an AppError
|
|
func WithContext(err *AppError, key string, value interface{}) *AppError {
|
|
newErr := &AppError{
|
|
Code: err.Code,
|
|
Message: err.Message,
|
|
HTTPStatus: err.HTTPStatus,
|
|
Cause: err.Cause,
|
|
}
|
|
if err.Context != nil {
|
|
newErr.Context = make(map[string]interface{})
|
|
for k, v := range err.Context {
|
|
newErr.Context[k] = v
|
|
}
|
|
} else {
|
|
newErr.Context = make(map[string]interface{})
|
|
}
|
|
newErr.Context[key] = value
|
|
return newErr
|
|
}
|
|
|
|
// WithMessage creates a new AppError with a custom message
|
|
func WithMessage(err *AppError, message string) *AppError {
|
|
return &AppError{
|
|
Code: err.Code,
|
|
Message: message,
|
|
HTTPStatus: err.HTTPStatus,
|
|
Cause: err.Cause,
|
|
Context: err.Context,
|
|
}
|
|
}
|