fix: unassign all campaigns when revoking partner status

Previously revoke_partner only changed partner_status and commission,
leaving campaigns orphaned with invalid partner_user_id. Now sets
partner_user_id=NULL on all campaigns belonging to the revoked partner.
This commit is contained in:
Fringg
2026-02-17 11:11:25 +03:00
parent ea5d932476
commit d39063b22f
+9 -2
View File
@@ -5,10 +5,10 @@ import string
from datetime import UTC, datetime
import structlog
from sqlalchemy import desc, func, select
from sqlalchemy import desc, func, select, update
from sqlalchemy.ext.asyncio import AsyncSession
from app.database.models import PartnerApplication, PartnerStatus, User
from app.database.models import AdvertisingCampaign, PartnerApplication, PartnerStatus, User
logger = structlog.get_logger(__name__)
@@ -164,6 +164,13 @@ class PartnerApplicationService:
user.partner_status = PartnerStatus.NONE.value
user.referral_commission_percent = None
# Отвязываем все кампании от бывшего партнёра
await db.execute(
update(AdvertisingCampaign)
.where(AdvertisingCampaign.partner_user_id == user_id)
.values(partner_user_id=None)
)
await db.commit()
logger.info(