Рабочая версия
This commit is contained in:
@@ -4,6 +4,7 @@ from sqlalchemy.future import select
|
||||
from sqlalchemy.exc import SQLAlchemyError
|
||||
from decimal import Decimal
|
||||
from sqlalchemy import asc, desc, update
|
||||
from sqlalchemy.orm import joinedload
|
||||
from instance.model import TicketMessage, User, Subscription, Transaction,SupportTicket
|
||||
|
||||
|
||||
@@ -219,3 +220,39 @@ class PostgresRepository:
|
||||
self.logger.error(f"Ошибка обновления статуса тикета {ticket_id}: {e}")
|
||||
await session.rollback()
|
||||
return "ERROR"
|
||||
|
||||
async def add_referal(self,referrer_id: str, referral_id:str):
|
||||
"""
|
||||
Добавление рефералу пользователей
|
||||
"""
|
||||
async for session in self.session_generator():
|
||||
try:
|
||||
referrer = await session.execute(
|
||||
select(User)
|
||||
.where(User.id == referrer_id)
|
||||
.options(joinedload(User.referrals)) # Загрузка связанных объектов
|
||||
)
|
||||
referrer = referrer.scalars().first()
|
||||
if not referrer:
|
||||
raise ValueError("Referrer not found")
|
||||
|
||||
# Проверить, существует ли уже такой реферал
|
||||
existing_referrals = [ref.id for ref in referrer.referrals]
|
||||
if referrer_id in existing_referrals:
|
||||
raise ValueError("Referral already exists")
|
||||
|
||||
# Найти реферала
|
||||
referral = await session.execute(
|
||||
select(User).where(User.id == referral_id)
|
||||
)
|
||||
referral = referral.scalars().first()
|
||||
|
||||
if not referral:
|
||||
raise ValueError("Referral user not found")
|
||||
|
||||
# Добавить реферала в список
|
||||
referrer.referrals.append(referral)
|
||||
await session.commit()
|
||||
except Exception as e:
|
||||
self.logger(f"Ошибка при добавлении рефералу пользователей")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user