KevinHuSh commited on
Commit
036238f
·
1 Parent(s): 8e8680b

fix doc number miss-match issue (#822)

Browse files

### What problem does this PR solve?

#620

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)

api/apps/document_app.py CHANGED
@@ -250,13 +250,9 @@ def rm():
250
  if not tenant_id:
251
  return get_data_error_result(retmsg="Tenant not found!")
252
 
253
- ELASTICSEARCH.deleteByQuery(
254
- Q("match", doc_id=doc.id), idxnm=search.index_name(tenant_id))
255
-
256
- DocumentService.clear_chunk_num(doc_id)
257
  b, n = File2DocumentService.get_minio_address(doc_id=doc_id)
258
 
259
- if not DocumentService.delete(doc):
260
  return get_data_error_result(
261
  retmsg="Database error (Document removal)!")
262
 
 
250
  if not tenant_id:
251
  return get_data_error_result(retmsg="Tenant not found!")
252
 
 
 
 
 
253
  b, n = File2DocumentService.get_minio_address(doc_id=doc_id)
254
 
255
+ if not DocumentService.remove_document(doc, tenant_id):
256
  return get_data_error_result(
257
  retmsg="Database error (Document removal)!")
258
 
api/apps/file2document_app.py CHANGED
@@ -58,11 +58,7 @@ def convert():
58
  tenant_id = DocumentService.get_tenant_id(doc_id)
59
  if not tenant_id:
60
  return get_data_error_result(retmsg="Tenant not found!")
61
- ELASTICSEARCH.deleteByQuery(
62
- Q("match", doc_id=doc.id), idxnm=search.index_name(tenant_id))
63
- DocumentService.increment_chunk_num(
64
- doc.id, doc.kb_id, doc.token_num * -1, doc.chunk_num * -1, 0)
65
- if not DocumentService.delete(doc):
66
  return get_data_error_result(
67
  retmsg="Database error (Document removal)!")
68
  File2DocumentService.delete_by_file_id(id)
@@ -125,11 +121,7 @@ def rm():
125
  tenant_id = DocumentService.get_tenant_id(doc_id)
126
  if not tenant_id:
127
  return get_data_error_result(retmsg="Tenant not found!")
128
- ELASTICSEARCH.deleteByQuery(
129
- Q("match", doc_id=doc.id), idxnm=search.index_name(tenant_id))
130
- DocumentService.increment_chunk_num(
131
- doc.id, doc.kb_id, doc.token_num * -1, doc.chunk_num * -1, 0)
132
- if not DocumentService.delete(doc):
133
  return get_data_error_result(
134
  retmsg="Database error (Document removal)!")
135
  return get_json_result(data=True)
 
58
  tenant_id = DocumentService.get_tenant_id(doc_id)
59
  if not tenant_id:
60
  return get_data_error_result(retmsg="Tenant not found!")
61
+ if not DocumentService.remove_document(doc, tenant_id):
 
 
 
 
62
  return get_data_error_result(
63
  retmsg="Database error (Document removal)!")
64
  File2DocumentService.delete_by_file_id(id)
 
121
  tenant_id = DocumentService.get_tenant_id(doc_id)
122
  if not tenant_id:
123
  return get_data_error_result(retmsg="Tenant not found!")
124
+ if not DocumentService.remove_document(doc, tenant_id):
 
 
 
 
125
  return get_data_error_result(
126
  retmsg="Database error (Document removal)!")
127
  return get_json_result(data=True)
api/apps/file_app.py CHANGED
@@ -277,11 +277,7 @@ def rm():
277
  tenant_id = DocumentService.get_tenant_id(doc_id)
278
  if not tenant_id:
279
  return get_data_error_result(retmsg="Tenant not found!")
280
- ELASTICSEARCH.deleteByQuery(
281
- Q("match", doc_id=doc.id), idxnm=search.index_name(tenant_id))
282
- DocumentService.increment_chunk_num(
283
- doc.id, doc.kb_id, doc.token_num * -1, doc.chunk_num * -1, 0)
284
- if not DocumentService.delete(doc):
285
  return get_data_error_result(
286
  retmsg="Database error (Document removal)!")
287
  File2DocumentService.delete_by_file_id(file_id)
 
277
  tenant_id = DocumentService.get_tenant_id(doc_id)
278
  if not tenant_id:
279
  return get_data_error_result(retmsg="Tenant not found!")
280
+ if not DocumentService.remove_document(doc, tenant_id):
 
 
 
 
281
  return get_data_error_result(
282
  retmsg="Database error (Document removal)!")
283
  File2DocumentService.delete_by_file_id(file_id)
api/apps/kb_app.py CHANGED
@@ -136,12 +136,7 @@ def rm():
136
  data=False, retmsg=f'Only owner of knowledgebase authorized for this operation.', retcode=RetCode.OPERATING_ERROR)
137
 
138
  for doc in DocumentService.query(kb_id=req["kb_id"]):
139
- ELASTICSEARCH.deleteByQuery(
140
- Q("match", doc_id=doc.id), idxnm=search.index_name(kbs[0].tenant_id))
141
-
142
- DocumentService.increment_chunk_num(
143
- doc.id, doc.kb_id, doc.token_num * -1, doc.chunk_num * -1, 0)
144
- if not DocumentService.delete(doc):
145
  return get_data_error_result(
146
  retmsg="Database error (Document removal)!")
147
 
 
136
  data=False, retmsg=f'Only owner of knowledgebase authorized for this operation.', retcode=RetCode.OPERATING_ERROR)
137
 
138
  for doc in DocumentService.query(kb_id=req["kb_id"]):
139
+ if not DocumentService.remove_document(doc, kbs[0].tenant_id):
 
 
 
 
 
140
  return get_data_error_result(
141
  retmsg="Database error (Document removal)!")
142
 
api/db/services/document_service.py CHANGED
@@ -70,27 +70,12 @@ class DocumentService(CommonService):
70
  raise RuntimeError("Database error (Knowledgebase)!")
71
  return doc
72
 
73
- @classmethod
74
- @DB.connection_context()
75
- def delete(cls, doc):
76
- e, kb = KnowledgebaseService.get_by_id(doc.kb_id)
77
- if not KnowledgebaseService.update_by_id(
78
- kb.id, {"doc_num": max(0, kb.doc_num - 1)}):
79
- raise RuntimeError("Database error (Knowledgebase)!")
80
- return cls.delete_by_id(doc.id)
81
-
82
  @classmethod
83
  @DB.connection_context()
84
  def remove_document(cls, doc, tenant_id):
85
  ELASTICSEARCH.deleteByQuery(
86
- Q("match", doc_id=doc.id), idxnm=search.index_name(tenant_id))
87
-
88
- cls.increment_chunk_num(
89
- doc.id, doc.kb_id, doc.token_num * -1, doc.chunk_num * -1, 0)
90
- if not cls.delete(doc):
91
- raise RuntimeError("Database error (Document removal)!")
92
-
93
- MINIO.rm(doc.kb_id, doc.location)
94
  return cls.delete_by_id(doc.id)
95
 
96
  @classmethod
 
70
  raise RuntimeError("Database error (Knowledgebase)!")
71
  return doc
72
 
 
 
 
 
 
 
 
 
 
73
  @classmethod
74
  @DB.connection_context()
75
  def remove_document(cls, doc, tenant_id):
76
  ELASTICSEARCH.deleteByQuery(
77
+ Q("match", doc_id=doc.id), idxnm=search.index_name(tenant_id))
78
+ cls.clear_chunk_num(doc.id)
 
 
 
 
 
 
79
  return cls.delete_by_id(doc.id)
80
 
81
  @classmethod