perf: optimize database queries in functions, feedbacks, and groups (#21019)

This commit is contained in:
Classic298
2026-01-29 18:44:50 +01:00
committed by GitHub
parent e686554392
commit 68e257849d
3 changed files with 12 additions and 20 deletions

View File

@@ -460,23 +460,15 @@ class FeedbackTable:
self, user_id: str, db: Optional[Session] = None
) -> bool:
with get_db_context(db) as db:
feedbacks = db.query(Feedback).filter_by(user_id=user_id).all()
if not feedbacks:
return False
for feedback in feedbacks:
db.delete(feedback)
result = db.query(Feedback).filter_by(user_id=user_id).delete()
db.commit()
return True
return result > 0
def delete_all_feedbacks(self, db: Optional[Session] = None) -> bool:
with get_db_context(db) as db:
feedbacks = db.query(Feedback).all()
if not feedbacks:
return False
for feedback in feedbacks:
db.delete(feedback)
result = db.query(Feedback).delete()
db.commit()
return True
return result > 0
Feedbacks = FeedbackTable()

View File

@@ -299,7 +299,7 @@ class FunctionsTable:
function.updated_at = int(time.time())
db.commit()
db.refresh(function)
return self.get_function_by_id(id, db=db)
return FunctionModel.model_validate(function)
except Exception:
return None
@@ -319,7 +319,7 @@ class FunctionsTable:
function.updated_at = int(time.time())
db.commit()
db.refresh(function)
return self.get_function_by_id(id, db=db)
return FunctionModel.model_validate(function)
else:
return None
except Exception as e:
@@ -381,7 +381,8 @@ class FunctionsTable:
}
)
db.commit()
return self.get_function_by_id(id, db=db)
function = db.get(Function, id)
return FunctionModel.model_validate(function) if function else None
except Exception:
return None

View File

@@ -589,11 +589,10 @@ class GroupTable:
if not user_ids:
return GroupModel.model_validate(group)
# Remove each user from group_member
for user_id in user_ids:
db.query(GroupMember).filter(
GroupMember.group_id == id, GroupMember.user_id == user_id
).delete()
# Remove users from group_member in batch
db.query(GroupMember).filter(
GroupMember.group_id == id, GroupMember.user_id.in_(user_ids)
).delete(synchronize_session=False)
# Update group timestamp
group.updated_at = int(time.time())