mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-16 06:15:23 +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 = []
|
models = []
|
||||||
for model, user in items:
|
for model, user in items:
|
||||||
model_model = ModelModel.model_validate(model)
|
|
||||||
user_model = UserResponse(**UserModel.model_validate(user).model_dump())
|
|
||||||
models.append(
|
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)
|
return ModelListResponse(items=models, total=total)
|
||||||
|
|
|
||||||
|
|
@ -227,9 +227,7 @@ class UsersTable:
|
||||||
) -> dict:
|
) -> dict:
|
||||||
with get_db() as db:
|
with get_db() as db:
|
||||||
# Join GroupMember so we can order by group_id when requested
|
# Join GroupMember so we can order by group_id when requested
|
||||||
query = db.query(User).outerjoin(
|
query = db.query(User)
|
||||||
GroupMember, GroupMember.user_id == User.id
|
|
||||||
)
|
|
||||||
|
|
||||||
if filter:
|
if filter:
|
||||||
query_key = filter.get("query")
|
query_key = filter.get("query")
|
||||||
|
|
@ -245,6 +243,7 @@ class UsersTable:
|
||||||
direction = filter.get("direction")
|
direction = filter.get("direction")
|
||||||
|
|
||||||
if order_by and order_by.startswith("group_id:"):
|
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]
|
group_id = order_by.split(":", 1)[1]
|
||||||
|
|
||||||
if direction == "asc":
|
if direction == "asc":
|
||||||
|
|
@ -291,11 +290,13 @@ class UsersTable:
|
||||||
query = query.order_by(User.created_at.desc())
|
query = query.order_by(User.created_at.desc())
|
||||||
|
|
||||||
# Count BEFORE pagination
|
# Count BEFORE pagination
|
||||||
|
query = query.distinct(User.id)
|
||||||
total = query.count()
|
total = query.count()
|
||||||
|
|
||||||
if skip:
|
# correct pagination logic
|
||||||
|
if skip is not None:
|
||||||
query = query.offset(skip)
|
query = query.offset(skip)
|
||||||
if limit:
|
if limit is not None:
|
||||||
query = query.limit(limit)
|
query = query.limit(limit)
|
||||||
|
|
||||||
users = query.all()
|
users = query.all()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue