mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-12 20:35:19 +00:00
refac/fix: db operations
This commit is contained in:
parent
0a687980ee
commit
f0d75e3a48
2 changed files with 14 additions and 8 deletions
|
|
@ -290,10 +290,15 @@ class ModelsTable:
|
|||
|
||||
models = []
|
||||
for model, user in items:
|
||||
model_model = ModelModel.model_validate(model)
|
||||
user_model = UserResponse(**UserModel.model_validate(user).model_dump())
|
||||
models.append(
|
||||
ModelUserResponse(**model_model.model_dump(), user=user_model)
|
||||
ModelUserResponse(
|
||||
**ModelModel.model_validate(model).model_dump(),
|
||||
user=(
|
||||
UserResponse(**UserModel.model_validate(user).model_dump())
|
||||
if user
|
||||
else None
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
return ModelListResponse(items=models, total=total)
|
||||
|
|
|
|||
|
|
@ -227,9 +227,7 @@ class UsersTable:
|
|||
) -> dict:
|
||||
with get_db() as db:
|
||||
# Join GroupMember so we can order by group_id when requested
|
||||
query = db.query(User).outerjoin(
|
||||
GroupMember, GroupMember.user_id == User.id
|
||||
)
|
||||
query = db.query(User)
|
||||
|
||||
if filter:
|
||||
query_key = filter.get("query")
|
||||
|
|
@ -245,6 +243,7 @@ class UsersTable:
|
|||
direction = filter.get("direction")
|
||||
|
||||
if order_by and order_by.startswith("group_id:"):
|
||||
query = query.outerjoin(GroupMember, GroupMember.user_id == User.id)
|
||||
group_id = order_by.split(":", 1)[1]
|
||||
|
||||
if direction == "asc":
|
||||
|
|
@ -291,11 +290,13 @@ class UsersTable:
|
|||
query = query.order_by(User.created_at.desc())
|
||||
|
||||
# Count BEFORE pagination
|
||||
query = query.distinct(User.id)
|
||||
total = query.count()
|
||||
|
||||
if skip:
|
||||
# correct pagination logic
|
||||
if skip is not None:
|
||||
query = query.offset(skip)
|
||||
if limit:
|
||||
if limit is not None:
|
||||
query = query.limit(limit)
|
||||
|
||||
users = query.all()
|
||||
|
|
|
|||
Loading…
Reference in a new issue