Skip to content

Commit e020488

Browse files
committed
refactor(system): extract admin details conversion to helper function
- Add `_system_admin_details()` helper function to convert database Admin model to AdminDetails - Import Admin model and AdminRoleData from respective modules - Replace inline AdminDetails.model_validate() call with helper function in get_system_stats() - Improves code reusability and maintainability for admin details conversion logic
1 parent afd61c9 commit e020488

1 file changed

Lines changed: 14 additions & 3 deletions

File tree

app/operation/system.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,26 @@
77
from app.db.crud.admin import get_admin
88
from app.db.crud.general import get_system_usage
99
from app.db.crud.user import count_online_users, get_users_count_by_status
10-
from app.db.models import UserStatus
11-
from app.models.admin import AdminDetails
10+
from app.db.models import Admin, UserStatus
11+
from app.models.admin import AdminDetails, AdminRoleData
1212
from app.models.system import InboundSummary, SystemStats
1313
from app.operation.permissions import PermissionDenied, enforce_permission, is_scope_all
1414
from app.utils.system import cpu_usage, disk_usage, get_uptime, memory_usage
1515

1616
from . import BaseOperation
1717

1818

19+
def _system_admin_details(db_admin: Admin) -> AdminDetails:
20+
return AdminDetails(
21+
id=db_admin.id,
22+
username=db_admin.username,
23+
used_traffic=int(db_admin.used_traffic or 0),
24+
data_limit=db_admin.data_limit,
25+
status=db_admin.status,
26+
role=AdminRoleData.model_validate(db_admin.role) if db_admin.role is not None else None,
27+
)
28+
29+
1930
class SystemOperation(BaseOperation):
2031
@staticmethod
2132
async def get_system_stats(db: AsyncSession, admin: AdminDetails, admin_username: str | None = None) -> SystemStats:
@@ -43,7 +54,7 @@ async def get_system_stats(db: AsyncSession, admin: AdminDetails, admin_username
4354
if admin.is_owner or can_read_admins:
4455
db_admin = await get_admin(db, admin_username, load_users=False, load_usage_logs=False)
4556
if db_admin is not None:
46-
admin_param = AdminDetails.model_validate(db_admin)
57+
admin_param = _system_admin_details(db_admin)
4758
else:
4859
admin_param = admin
4960
elif not admin.is_owner:

0 commit comments

Comments
 (0)