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.
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user