mirror of
https://github.com/open-webui/open-webui.git
synced 2026-06-14 03:30:25 +00:00
refac
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user