13
13
# See the License for the specific language governing permissions and
14
14
# limitations under the License.
15
15
#
16
+
16
17
from flask import request
17
18
18
19
from api .db import StatusEnum , FileSource
@@ -33,7 +34,7 @@ def save(tenant_id):
33
34
req = request .json
34
35
e , t = TenantService .get_by_id (tenant_id )
35
36
if "id" not in req :
36
- if "tenant_id" in req or "embd_id " in req :
37
+ if "tenant_id" in req or "embedding_model " in req :
37
38
return get_data_error_result (
38
39
retmsg = "Tenant_id or embedding_model must not be provided" )
39
40
if "name" not in req :
@@ -47,22 +48,39 @@ def save(tenant_id):
47
48
if KnowledgebaseService .query (name = req ["name" ], tenant_id = tenant_id , status = StatusEnum .VALID .value ):
48
49
return get_data_error_result (
49
50
retmsg = "Duplicated knowledgebase name in creating dataset." )
50
- req ["tenant_id" ] = tenant_id
51
- req ['created_by' ] = tenant_id
52
- req ['embd_id' ] = t .embd_id
51
+ req ["tenant_id" ] = req ['created_by' ] = tenant_id
52
+ req ['embedding_model' ] = t .embd_id
53
+ key_mapping = {
54
+ "chunk_num" : "chunk_count" ,
55
+ "doc_num" : "document_count" ,
56
+ "parser_id" : "parse_method" ,
57
+ "embd_id" : "embedding_model"
58
+ }
59
+ mapped_keys = {new_key : req [old_key ] for new_key , old_key in key_mapping .items () if old_key in req }
60
+ req .update (mapped_keys )
53
61
if not KnowledgebaseService .save (** req ):
54
62
return get_data_error_result (retmsg = "Create dataset error.(Database error)" )
55
- return get_json_result (data = req )
63
+ renamed_data = {}
64
+ e , k = KnowledgebaseService .get_by_id (req ["id" ])
65
+ for key , value in k .to_dict ().items ():
66
+ new_key = key_mapping .get (key , key )
67
+ renamed_data [new_key ] = value
68
+ return get_json_result (data = renamed_data )
56
69
else :
70
+ invalid_keys = {"embd_id" , "chunk_num" , "doc_num" , "parser_id" }
71
+ if any (key in req for key in invalid_keys ):
72
+ return get_data_error_result (retmsg = "The input parameters are invalid." )
73
+
57
74
if "tenant_id" in req :
58
75
if req ["tenant_id" ] != tenant_id :
59
76
return get_data_error_result (
60
77
retmsg = "Can't change tenant_id." )
61
78
62
- if "embd_id " in req :
63
- if req ["embd_id " ] != t .embd_id :
79
+ if "embedding_model " in req :
80
+ if req ["embedding_model " ] != t .embd_id :
64
81
return get_data_error_result (
65
82
retmsg = "Can't change embedding_model." )
83
+ req .pop ("embedding_model" )
66
84
67
85
if not KnowledgebaseService .query (
68
86
created_by = tenant_id , id = req ["id" ]):
@@ -72,20 +90,23 @@ def save(tenant_id):
72
90
73
91
e , kb = KnowledgebaseService .get_by_id (req ["id" ])
74
92
75
- if "chunk_num " in req :
76
- if req ["chunk_num " ] != kb .chunk_num :
93
+ if "chunk_count " in req :
94
+ if req ["chunk_count " ] != kb .chunk_num :
77
95
return get_data_error_result (
78
96
retmsg = "Can't change chunk_count." )
97
+ req .pop ("chunk_count" )
79
98
80
- if "doc_num " in req :
81
- if req ['doc_num ' ] != kb .doc_num :
99
+ if "document_count " in req :
100
+ if req ['document_count ' ] != kb .doc_num :
82
101
return get_data_error_result (
83
102
retmsg = "Can't change document_count." )
103
+ req .pop ("document_count" )
84
104
85
- if "parser_id " in req :
86
- if kb .chunk_num > 0 and req ['parser_id ' ] != kb .parser_id :
105
+ if "parse_method " in req :
106
+ if kb .chunk_num != 0 and req ['parse_method ' ] != kb .parser_id :
87
107
return get_data_error_result (
88
- retmsg = "if chunk count is not 0, parse method is not changable." )
108
+ retmsg = "If chunk count is not 0, parse method is not changable." )
109
+ req ['parser_id' ] = req .pop ('parse_method' )
89
110
if "name" in req :
90
111
if req ["name" ].lower () != kb .name .lower () \
91
112
and len (KnowledgebaseService .query (name = req ["name" ], tenant_id = tenant_id ,
@@ -103,6 +124,9 @@ def save(tenant_id):
103
124
@token_required
104
125
def delete (tenant_id ):
105
126
req = request .args
127
+ if "id" not in req :
128
+ return get_data_error_result (
129
+ retmsg = "id is required" )
106
130
kbs = KnowledgebaseService .query (
107
131
created_by = tenant_id , id = req ["id" ])
108
132
if not kbs :
@@ -120,7 +144,7 @@ def delete(tenant_id):
120
144
121
145
if not KnowledgebaseService .delete_by_id (req ["id" ]):
122
146
return get_data_error_result (
123
- retmsg = "Delete dataset error.(Database error )" )
147
+ retmsg = "Delete dataset error.(Database serror )" )
124
148
return get_json_result (data = True )
125
149
126
150
@@ -134,37 +158,63 @@ def list_datasets(tenant_id):
134
158
tenants = TenantService .get_joined_tenants_by_user_id (tenant_id )
135
159
kbs = KnowledgebaseService .get_by_tenant_ids (
136
160
[m ["tenant_id" ] for m in tenants ], tenant_id , page_number , items_per_page , orderby , desc )
137
- return get_json_result (data = kbs )
161
+ renamed_list = []
162
+ for kb in kbs :
163
+ key_mapping = {
164
+ "chunk_num" : "chunk_count" ,
165
+ "doc_num" : "document_count" ,
166
+ "parser_id" : "parse_method" ,
167
+ "embd_id" : "embedding_model"
168
+ }
169
+ renamed_data = {}
170
+ for key , value in kb .items ():
171
+ new_key = key_mapping .get (key , key )
172
+ renamed_data [new_key ] = value
173
+ renamed_list .append (renamed_data )
174
+ return get_json_result (data = renamed_list )
138
175
139
176
140
177
@manager .route ('/detail' , methods = ['GET' ])
141
178
@token_required
142
179
def detail (tenant_id ):
143
180
req = request .args
181
+ key_mapping = {
182
+ "chunk_num" : "chunk_count" ,
183
+ "doc_num" : "document_count" ,
184
+ "parser_id" : "parse_method" ,
185
+ "embd_id" : "embedding_model"
186
+ }
187
+ renamed_data = {}
144
188
if "id" in req :
145
189
id = req ["id" ]
146
190
kb = KnowledgebaseService .query (created_by = tenant_id , id = req ["id" ])
147
191
if not kb :
148
192
return get_json_result (
149
- data = False , retmsg = 'You do not own the dataset' ,
193
+ data = False , retmsg = 'You do not own the dataset. ' ,
150
194
retcode = RetCode .OPERATING_ERROR )
151
195
if "name" in req :
152
196
name = req ["name" ]
153
197
if kb [0 ].name != name :
154
198
return get_json_result (
155
- data = False , retmsg = 'You do not own the dataset' ,
199
+ data = False , retmsg = 'You do not own the dataset. ' ,
156
200
retcode = RetCode .OPERATING_ERROR )
157
201
e , k = KnowledgebaseService .get_by_id (id )
158
- return get_json_result (data = k .to_dict ())
202
+ for key , value in k .to_dict ().items ():
203
+ new_key = key_mapping .get (key , key )
204
+ renamed_data [new_key ] = value
205
+ return get_json_result (data = renamed_data )
159
206
else :
160
207
if "name" in req :
161
208
name = req ["name" ]
162
209
e , k = KnowledgebaseService .get_by_name (kb_name = name , tenant_id = tenant_id )
163
210
if not e :
164
211
return get_json_result (
165
- data = False , retmsg = 'You do not own the dataset' ,
212
+ data = False , retmsg = 'You do not own the dataset. ' ,
166
213
retcode = RetCode .OPERATING_ERROR )
167
- return get_json_result (data = k .to_dict ())
214
+ for key , value in k .to_dict ().items ():
215
+ new_key = key_mapping .get (key , key )
216
+ renamed_data [new_key ] = value
217
+ return get_json_result (data = renamed_data )
168
218
else :
169
219
return get_data_error_result (
170
220
retmsg = "At least one of `id` or `name` must be provided." )
0 commit comments