From ae7feeb726ab0a9b3074c9ed11fd45e2cc412ea0 Mon Sep 17 00:00:00 2001 From: Fringg Date: Fri, 24 Apr 2026 03:32:29 +0300 Subject: [PATCH] fix: server squad sync fails on fresh DB without default promo group On first startup with empty database, ensure_servers_synced() fetched squads from RemnaWave but create_server_squad() failed with ValueError('Server squad must be linked to at least one promo group') because no default promo group existed yet. Now _get_default_promo_group_id() auto-creates a default promo group via _get_or_create_default_promo_group() when none exists, matching the pattern used throughout the codebase for user registration. --- app/database/crud/server_squad.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/database/crud/server_squad.py b/app/database/crud/server_squad.py index 828c0d1e..3964bf34 100644 --- a/app/database/crud/server_squad.py +++ b/app/database/crud/server_squad.py @@ -33,7 +33,15 @@ logger = structlog.get_logger(__name__) async def _get_default_promo_group_id(db: AsyncSession) -> int | None: result = await db.execute(select(PromoGroup.id).where(PromoGroup.is_default.is_(True)).limit(1)) - return result.scalar_one_or_none() + default_id = result.scalar_one_or_none() + if default_id is not None: + return default_id + + # На пустой БД дефолтной промогруппы нет — создаём автоматически + from app.database.crud.user import _get_or_create_default_promo_group + + default_group = await _get_or_create_default_promo_group(db) + return default_group.id async def create_server_squad(