Fix server user list counts

This commit is contained in:
Egor
2025-09-30 01:26:37 +03:00
parent fbb2afd9e1
commit e2f313e6ea
2 changed files with 11 additions and 5 deletions

View File

@@ -2,7 +2,7 @@ import logging
from datetime import datetime
from typing import Iterable, List, Optional, Sequence, Tuple
from sqlalchemy import select, and_, func, update, delete, text
from sqlalchemy import select, and_, func, update, delete, text, or_
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.orm import selectinload
@@ -348,14 +348,20 @@ async def sync_with_remnawave(
async def get_server_connected_users(
db: AsyncSession,
server_id: int
server_id: int,
server_uuid: Optional[str] = None,
) -> List[User]:
filters = [SubscriptionServer.server_squad_id == server_id]
if server_uuid:
filters.append(Subscription.connected_squads.contains([server_uuid]))
result = await db.execute(
select(User)
.join(Subscription, Subscription.user_id == User.id)
.join(SubscriptionServer, SubscriptionServer.subscription_id == Subscription.id)
.where(SubscriptionServer.server_squad_id == server_id)
.outerjoin(SubscriptionServer, SubscriptionServer.subscription_id == Subscription.id)
.where(or_(*filters))
.options(selectinload(User.subscription))
.order_by(User.id)
)

View File

@@ -365,7 +365,7 @@ async def show_server_users(
await callback.answer("❌ Сервер не найден!", show_alert=True)
return
users = await get_server_connected_users(db, server_id)
users = await get_server_connected_users(db, server_id, server.squad_uuid)
safe_name = html.escape(server.display_name or "")
safe_uuid = html.escape(server.squad_uuid or "")