Skip to content

Commit d25813f

Browse files
perf: User and Workspace Sorting Optimization
1 parent 451e843 commit d25813f

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

backend/apps/system/api/user.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from collections import defaultdict
22
from typing import Optional
3-
from fastapi import APIRouter, HTTPException, Query
4-
from sqlmodel import SQLModel, func, or_, select, delete as sqlmodel_delete
3+
from fastapi import APIRouter, Query
4+
from sqlmodel import SQLModel, or_, select, delete as sqlmodel_delete
55
from apps.system.crud.user import check_account_exists, check_email_exists, check_email_format, check_pwd_format, get_db_user, single_delete, user_ws_options
66
from apps.system.models.system_model import UserWsModel, WorkspaceModel
77
from apps.system.models.user import UserModel
@@ -38,7 +38,14 @@ async def pager(
3838
paginator = Paginator(session)
3939
filters = {}
4040

41-
origin_stmt = select(UserModel.id).join(UserWsModel, UserModel.id == UserWsModel.uid, isouter=True).where(UserModel.id != 1).distinct()
41+
origin_stmt = (
42+
select(UserModel.id, UserModel.account)
43+
.join(UserWsModel, UserModel.id == UserWsModel.uid, isouter=True)
44+
.where(UserModel.id != 1)
45+
.distinct()
46+
.order_by(UserModel.account)
47+
)
48+
4249
if oidlist:
4350
origin_stmt = origin_stmt.where(UserWsModel.oid.in_(oidlist))
4451
if status is not None:

backend/apps/system/api/workspace.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,11 @@ async def delete(session: SessionDep, current_user: CurrentUser, trans: Trans, d
171171

172172
@router.get("", response_model=list[WorkspaceModel])
173173
async def query(session: SessionDep, trans: Trans):
174-
list_result = session.exec(select(WorkspaceModel).order_by(WorkspaceModel.create_time.asc())).all()
174+
list_result = session.exec(select(WorkspaceModel)).all()
175175
for ws in list_result:
176176
if ws.name.startswith('i18n'):
177-
ws.name = trans(ws.name)
177+
ws.name = trans(ws.name)
178+
list_result.sort(key=lambda x: x.name)
178179
return list_result
179180

180181
@router.post("")

backend/apps/system/crud/user.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,13 @@ async def user_ws_options(session: Session, uid: int, trans: Optional[I18n] = No
5656
result = session.exec(stmt)
5757
if not trans:
5858
return result.all()
59-
return [
59+
list_result = [
6060
UserWs(id = id, name = trans(name) if name.startswith('i18n') else name)
6161
for id, name in result.all()
6262
]
63+
if list_result:
64+
list_result.sort(key=lambda x: x.name)
65+
return list_result
6366

6467
@clear_cache(namespace=CacheNamespace.AUTH_INFO, cacheName=CacheName.USER_INFO, keyExpression="id")
6568
async def single_delete(session: SessionDep, id: int):

0 commit comments

Comments
 (0)