Feat: Improve 'user_canvan_version' delete and 'document' delete performance (#6553)

### What problem does this PR solve?

1.  Add delete_by_ids method
2. Add get_doc_ids_by_doc_names
3. Improve user_canvan_version's logic (avoid O(n) db IO)
4. Improve document delete logic (avoid O(n) db IO)

### Type of change

- [x] Performance Improvement
This commit is contained in:
Stephen Hu
2025-05-07 10:55:08 +08:00
committed by GitHub
parent 539876af11
commit 27ffc0ed74
4 changed files with 33 additions and 4 deletions

View File

@ -31,8 +31,11 @@ class UserCanvasVersionService(CommonService):
try:
user_canvas_version = cls.model.select().where(cls.model.user_canvas_id == user_canvas_id).order_by(cls.model.create_time.desc())
if user_canvas_version.count() > 20:
delete_ids = []
for i in range(20, user_canvas_version.count()):
cls.delete(user_canvas_version[i].id)
delete_ids.append(user_canvas_version[i].id)
cls.delete_by_ids(delete_ids)
return True
except DoesNotExist:
return None