30 lines
1.0 KiB
Python

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