from sqlalchemy.orm import Session from datetime import datetime, timedelta from tg_bot.infrastructure.database.models import UserModel class UserService: def __init__(self, session: Session): self.session = session async def activate_premium(self, telegram_id: int) -> bool: try: user = self.session.query(UserModel) \ .filter(UserModel.telegram_id == str(telegram_id)) \ .first() if user: user.is_premium = True if user.premium_until and user.premium_until > datetime.now(): user.premium_until = user.premium_until + timedelta(days=30) else: user.premium_until = datetime.now() + timedelta(days=30) self.session.commit() return True else: return False except Exception as e: print(f"Error activating premium: {e}") self.session.rollback() return False