This commit is contained in:
Timothy Jaeryang Baek
2026-06-01 13:20:33 -07:00
parent 4705c2d988
commit 160a6694e4
2 changed files with 45 additions and 11 deletions
+32 -3
View File
@@ -380,10 +380,39 @@ class FeedbackTable:
result = await db.execute(select(Feedback).filter_by(type=type).order_by(Feedback.updated_at.desc())) result = await db.execute(select(Feedback).filter_by(type=type).order_by(Feedback.updated_at.desc()))
return [FeedbackModel.model_validate(feedback) for feedback in result.scalars().all()] return [FeedbackModel.model_validate(feedback) for feedback in result.scalars().all()]
async def get_feedbacks_by_user_id(self, user_id: str, db: Optional[AsyncSession] = None) -> list[FeedbackModel]: async def get_feedbacks_by_user_id(
self,
user_id: str,
skip: int = 0,
limit: int = 30,
db: Optional[AsyncSession] = None,
) -> FeedbackListResponse:
async with get_async_db_context(db) as db: async with get_async_db_context(db) as db:
result = await db.execute(select(Feedback).filter_by(user_id=user_id).order_by(Feedback.updated_at.desc())) stmt = (
return [FeedbackModel.model_validate(feedback) for feedback in result.scalars().all()] select(Feedback, User)
.join(User, Feedback.user_id == User.id)
.filter(Feedback.user_id == user_id)
.order_by(Feedback.updated_at.desc())
)
count_result = await db.execute(select(func.count()).select_from(stmt.subquery()))
total = count_result.scalar()
if skip:
stmt = stmt.offset(skip)
if limit:
stmt = stmt.limit(limit)
result = await db.execute(stmt)
items = result.all()
feedbacks = []
for feedback, user in items:
feedback_model = FeedbackModel.model_validate(feedback)
user_model = UserResponse.model_validate(user)
feedbacks.append(FeedbackUserResponse(**feedback_model.model_dump(), user=user_model))
return FeedbackListResponse(items=feedbacks, total=total)
async def update_feedback_by_id( async def update_feedback_by_id(
self, id: str, form_data: FeedbackForm, db: Optional[AsyncSession] = None self, id: str, form_data: FeedbackForm, db: Optional[AsyncSession] = None
+13 -8
View File
@@ -11,7 +11,6 @@ from open_webui.models.feedbacks import (
FeedbackListResponse, FeedbackListResponse,
FeedbackModel, FeedbackModel,
Feedbacks, Feedbacks,
FeedbackUserResponse,
LeaderboardFeedbackData, LeaderboardFeedbackData,
ModelHistoryEntry, ModelHistoryEntry,
ModelHistoryResponse, ModelHistoryResponse,
@@ -317,10 +316,19 @@ async def export_all_feedbacks(
return feedbacks return feedbacks
@router.get('/feedbacks/user', response_model=list[FeedbackUserResponse]) PAGE_ITEM_COUNT = 30
async def get_feedbacks(user=Depends(get_verified_user), db: AsyncSession = Depends(get_async_session)):
feedbacks = await Feedbacks.get_feedbacks_by_user_id(user.id, db=db)
return feedbacks @router.get('/feedbacks/user', response_model=FeedbackListResponse)
async def get_user_feedbacks(
page: Optional[int] = 1,
user=Depends(get_verified_user),
db: AsyncSession = Depends(get_async_session),
):
limit = PAGE_ITEM_COUNT
page = max(1, page)
skip = (page - 1) * limit
return await Feedbacks.get_feedbacks_by_user_id(user.id, skip=skip, limit=limit, db=db)
@router.delete('/feedbacks', response_model=bool) @router.delete('/feedbacks', response_model=bool)
@@ -329,9 +337,6 @@ async def delete_feedbacks(user=Depends(get_verified_user), db: AsyncSession = D
return success return success
PAGE_ITEM_COUNT = 30
@router.get('/feedbacks/list', response_model=FeedbackListResponse) @router.get('/feedbacks/list', response_model=FeedbackListResponse)
async def get_feedbacks( async def get_feedbacks(
order_by: Optional[str] = None, order_by: Optional[str] = None,