-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patherrors.go
More file actions
161 lines (141 loc) · 4.46 KB
/
Copy patherrors.go
File metadata and controls
161 lines (141 loc) · 4.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
// Package knowledgesdk errors.go
package knowledgesdk
import (
"errors"
"fmt"
)
// 定义SDK错误码
const (
// 知识库相关错误
ErrKnowledgeNotExist = "ERR_KNOWLEDGE_NOT_EXIST"
ErrKnowledgeCreateFailed = "ERR_KNOWLEDGE_CREATE_FAILED"
ErrKnowledgeUpdateFailed = "ERR_KNOWLEDGE_UPDATE_FAILED"
ErrKnowledgeDeleteFailed = "ERR_KNOWLEDGE_DELETE_FAILED"
// 文档相关错误
ErrDocumentNotExist = "ERR_DOCUMENT_NOT_EXIST"
ErrDocumentCreateFailed = "ERR_DOCUMENT_CREATE_FAILED"
ErrDocumentUpdateFailed = "ERR_DOCUMENT_UPDATE_FAILED"
ErrDocumentDeleteFailed = "ERR_DOCUMENT_DELETE_FAILED"
ErrDocumentUploadFailed = "ERR_DOCUMENT_UPLOAD_FAILED"
ErrDocumentProcessFailed = "ERR_DOCUMENT_PROCESS_FAILED"
// 向量和嵌入相关错误
ErrEmbeddingFailed = "ERR_EMBEDDING_FAILED"
ErrVectorSearchFailed = "ERR_VECTOR_SEARCH_FAILED"
ErrVectorInsertFailed = "ERR_VECTOR_INSERT_FAILED"
ErrVectorUpdateFailed = "ERR_VECTOR_UPDATE_FAILED"
// 数据库相关错误
ErrDatabaseConnectFailed = "ERR_DATABASE_CONNECT_FAILED"
ErrDatabaseQueryFailed = "ERR_DATABASE_QUERY_FAILED"
ErrDatabaseTransactFailed = "ERR_DATABASE_TRANSACT_FAILED"
// 配置和初始化相关错误
ErrConfigInvalid = "ERR_CONFIG_INVALID"
ErrSDKInitFailed = "ERR_SDK_INIT_FAILED"
// API请求相关错误
ErrInvalidRequest = "ERR_INVALID_REQUEST"
ErrUnauthorized = "ERR_UNAUTHORIZED"
// 其他通用错误
ErrInternalServer = "ERR_INTERNAL_SERVER"
ErrNotImplemented = "ERR_NOT_IMPLEMENTED"
)
// 定义SDK错误类型
type SDKError struct {
Code string
Message string
Err error
}
// Error 实现error接口
func (e *SDKError) Error() string {
if e.Err != nil {
return fmt.Sprintf("[%s] %s: %v", e.Code, e.Message, e.Err)
}
return fmt.Sprintf("[%s] %s", e.Code, e.Message)
}
// Unwrap 支持错误链
func (e *SDKError) Unwrap() error {
return e.Err
}
// Is 实现errors.Is接口
func (e *SDKError) Is(target error) bool {
t, ok := target.(*SDKError)
if !ok {
return false
}
return e.Code == t.Code
}
// NewError 创建新的SDK错误
func NewError(code string, message string, err error) *SDKError {
return &SDKError{
Code: code,
Message: message,
Err: err,
}
}
// 定义一些预定义错误实例,便于直接使用
var (
// 知识库不存在
ErrKnowledgeBaseNotFound = NewError(
ErrKnowledgeNotExist,
"知识库不存在",
errors.New("knowledge base not found"),
)
// 文档不存在
ErrDocumentNotFound = NewError(
ErrDocumentNotExist,
"文档不存在",
errors.New("document not found"),
)
// 内部服务器错误
ErrInternalServerError = NewError(
ErrInternalServer,
"内部服务器错误",
errors.New("internal server error"),
)
)
// IsKnowledgeNotExistError 检查是否为知识库不存在错误
func IsKnowledgeNotExistError(err error) bool {
var sdkErr *SDKError
if errors.As(err, &sdkErr) {
return sdkErr.Code == ErrKnowledgeNotExist
}
return false
}
// IsDocumentNotExistError 检查是否为文档不存在错误
func IsDocumentNotExistError(err error) bool {
var sdkErr *SDKError
if errors.As(err, &sdkErr) {
return sdkErr.Code == ErrDocumentNotExist
}
return false
}
// GetErrorMessage 获取错误消息
func GetErrorMessage(code string) string {
messages := map[string]string{
ErrKnowledgeNotExist: "知识库不存在",
ErrKnowledgeCreateFailed: "创建知识库失败",
ErrKnowledgeUpdateFailed: "更新知识库失败",
ErrKnowledgeDeleteFailed: "删除知识库失败",
ErrDocumentNotExist: "文档不存在",
ErrDocumentCreateFailed: "创建文档失败",
ErrDocumentUpdateFailed: "更新文档失败",
ErrDocumentDeleteFailed: "删除文档失败",
ErrDocumentUploadFailed: "上传文档失败",
ErrDocumentProcessFailed: "处理文档失败",
ErrEmbeddingFailed: "生成嵌入向量失败",
ErrVectorSearchFailed: "向量搜索失败",
ErrVectorInsertFailed: "向量插入失败",
ErrVectorUpdateFailed: "更新向量失败",
ErrDatabaseConnectFailed: "数据库连接失败",
ErrDatabaseQueryFailed: "数据库查询失败",
ErrDatabaseTransactFailed: "数据库事务失败",
ErrConfigInvalid: "配置无效",
ErrSDKInitFailed: "SDK初始化失败",
ErrInvalidRequest: "无效请求",
ErrUnauthorized: "未授权",
ErrInternalServer: "内部服务器错误",
ErrNotImplemented: "功能未实现",
}
if msg, ok := messages[code]; ok {
return msg
}
return "未知错误"
}