update: list users

This commit is contained in:
tao.chen
2026-08-06 10:25:50 +08:00
parent b9a028a1db
commit 485d324d39
+46
View File
@@ -25,6 +25,10 @@ Workspace membership CRUD::
PATCH /workspaces/{workspace_id}/members/{user_id} — update role/status
DELETE /workspaces/{workspace_id}/members/{user_id} — remove a member
Platform employee roster::
GET /employees — list all non-deleted users
Invariants
----------
@@ -200,6 +204,22 @@ def member_payload(
}
def platform_employee_payload(
user: Users,
role: Roles | None,
) -> dict[str, Any]:
return {
"user_id": user.user_id,
"username": user.username,
"display_name": user.display_name,
"email": user.email,
"status": user.status,
"role_code": role.role_code if role is not None else None,
"role_name": role.role_name if role is not None else None,
"created_at": user.created_at.isoformat(),
}
# ---------------------------------------------------------------------------
# Internal helpers
# ---------------------------------------------------------------------------
@@ -256,6 +276,32 @@ def _envelope(request_id: str, data: Any, meta: dict[str, Any] | None = None) ->
}
# ---------------------------------------------------------------------------
# Platform employee roster
# ---------------------------------------------------------------------------
@router.get("/employees")
async def list_platform_employees(
context: SystemAdminContext = Depends(system_admin_context),
session: AsyncSession = Depends(database_session),
) -> dict[str, Any]:
"""List every non-soft-deleted platform user."""
rows = (
await session.execute(
select(Users, Roles)
.outerjoin(Roles, Roles.role_id == Users.platform_role_id)
.where(Users.is_deleted == 0)
.order_by(Users.created_at, Users.user_id)
)
).all()
return _envelope(
context.request_id,
[platform_employee_payload(user, role) for user, role in rows],
{"count": len(rows)},
)
# ---------------------------------------------------------------------------
# Workspace CRUD
# ---------------------------------------------------------------------------