- Небольшая реорганизация кода в bd

- добавление работы меню ~ в процессе
- Переделал работу tarif_setting
This commit is contained in:
Disledg
2024-10-07 20:38:44 +03:00
parent 0b0d56c045
commit 4dfa80ffae
4 changed files with 173 additions and 74 deletions

74
db_operations.py Normal file
View File

@@ -0,0 +1,74 @@
from service import UserService
#DataBase
from sqlalchemy import desc
from db import get_db_session
from db import User
from db import Subscription
from db import Transaction
from db import VPNServer
import json
with open('config.json', 'r') as file:
config = json.load(file)
def last_subscription(session,user):
last_subscription = (
session.query(Subscription)
.filter(Subscription.user_id == user.id)
.order_by(desc(Subscription.created_at))
.first()
)
return last_subscription
def get_sub_list(session,count,user_id):
subscriptions = (
session.query(Subscription)
.filter(Subscription.user_id == str(user_id))
.order_by(desc(Subscription.created_at))
.limit(count) # Ограничиваем результат 10 записями
.all() # Получаем все записи
)
return subscriptions
def create_user(telegram_id: str, username: str = None, balance: float = 0.0):
db = next(get_db_session())
try:
new_user = User(
telegram_id=telegram_id,
username=username,
balance=balance
)
db.add(new_user)
db.commit()
db.refresh(new_user)
return new_user
except Exception as e:
db.rollback()
raise e
finally:
db.close()
def buy_sub(session, telegram_id: str, plan: str, logger):
try:
user = session.query(User).filter(User.telegram_id == str(telegram_id)).first()
if user is None:
logger.error(f"Пользователь с Telegram ID {telegram_id} не найден.")
return "error"
current_plan = config['subscription_templates'].get(plan)
if current_plan is None:
logger.error(f"Тариф {plan} не найден в шаблонах.")
return "error"
if user.balance == current_plan['cost']:
service = UserService(logger)
service.tariff_setting(user, plan, current_plan['duration'])
return "OK"
else:
logger.error(f"Недостаточно средств на счету пользователя {telegram_id} для тарифа {plan}.")
return "error"
except Exception as e:
logger.error(f"Ошибка при покупке тарифа для пользователя {telegram_id}: {e}")