forked from kodorvan/stcs
Added the function of getting and updating data in the database for the UserTimer table
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
|
from datetime import datetime, timedelta
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -14,7 +15,7 @@ from app.telegram.database.models import User_Additional_Settings as UAS
|
|||||||
from app.telegram.database.models import Trading_Mode
|
from app.telegram.database.models import Trading_Mode
|
||||||
from app.telegram.database.models import Margin_type
|
from app.telegram.database.models import Margin_type
|
||||||
from app.telegram.database.models import Trigger
|
from app.telegram.database.models import Trigger
|
||||||
from app.telegram.database.models import USER_DEALS
|
from app.telegram.database.models import USER_DEALS, UserTimer
|
||||||
|
|
||||||
import app.telegram.functions.functions as func # functions
|
import app.telegram.functions.functions as func # functions
|
||||||
|
|
||||||
@@ -142,10 +143,19 @@ async def get_user_trades(tg_id):
|
|||||||
return trades
|
return trades
|
||||||
|
|
||||||
|
|
||||||
async def update_user_trades(tg_id, symbol, side):
|
async def update_user_trades(tg_id, **kwargs):
|
||||||
async with async_session() as session:
|
async with async_session() as session:
|
||||||
await session.execute(update(USER_DEALS).where(USER_DEALS.tg_id == tg_id).values(symbol = symbol, side = side))
|
query = update(USER_DEALS).where(USER_DEALS.tg_id == tg_id).values(**kwargs)
|
||||||
|
await session.execute(query)
|
||||||
|
await session.commit()
|
||||||
|
|
||||||
|
async def delete_user_trade(tg_id: int, symbol: str):
|
||||||
|
async with async_session() as session:
|
||||||
|
await session.execute(
|
||||||
|
USER_DEALS.__table__.delete().where(
|
||||||
|
(USER_DEALS.tg_id == tg_id) & (USER_DEALS.symbol == symbol)
|
||||||
|
)
|
||||||
|
)
|
||||||
await session.commit()
|
await session.commit()
|
||||||
|
|
||||||
async def get_for_registration_trading_mode():
|
async def get_for_registration_trading_mode():
|
||||||
@@ -319,4 +329,64 @@ async def update_commission_fee(tg_id, num):
|
|||||||
|
|
||||||
await session.commit()
|
await session.commit()
|
||||||
|
|
||||||
|
async def get_user_timer(tg_id):
|
||||||
|
async with async_session() as session:
|
||||||
|
result = await session.execute(select(UserTimer).where(UserTimer.tg_id == tg_id))
|
||||||
|
user_timer = result.scalars().first()
|
||||||
|
|
||||||
|
if not user_timer:
|
||||||
|
logging.info(f"No timer found for user {tg_id}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
timer_minutes = user_timer.timer_minutes
|
||||||
|
timer_start = user_timer.timer_start
|
||||||
|
timer_end = user_timer.timer_end
|
||||||
|
|
||||||
|
logging.info(f"Timer data for tg_id={tg_id}: "
|
||||||
|
f"timer_minutes={timer_minutes}, "
|
||||||
|
f"timer_start={timer_start}, "
|
||||||
|
f"timer_end={timer_end}")
|
||||||
|
|
||||||
|
remaining = None
|
||||||
|
if timer_end:
|
||||||
|
remaining = max(0, int((timer_end - datetime.utcnow()).total_seconds() // 60))
|
||||||
|
|
||||||
|
return {
|
||||||
|
"timer_minutes": timer_minutes,
|
||||||
|
"timer_start": timer_start,
|
||||||
|
"timer_end": timer_end,
|
||||||
|
"remaining_minutes": remaining
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async def update_user_timer(tg_id, minutes: int):
|
||||||
|
async with async_session() as session:
|
||||||
|
try:
|
||||||
|
async with async_session() as session:
|
||||||
|
timer_start = None
|
||||||
|
timer_end = None
|
||||||
|
|
||||||
|
if minutes > 0:
|
||||||
|
timer_start = datetime.utcnow()
|
||||||
|
timer_end = timer_start + timedelta(minutes=minutes)
|
||||||
|
|
||||||
|
result = await session.execute(select(UserTimer).where(UserTimer.tg_id == tg_id))
|
||||||
|
user_timer = result.scalars().first()
|
||||||
|
|
||||||
|
if user_timer:
|
||||||
|
user_timer.timer_minutes = minutes
|
||||||
|
user_timer.timer_start = timer_start
|
||||||
|
user_timer.timer_end = timer_end
|
||||||
|
else:
|
||||||
|
user_timer = UserTimer(
|
||||||
|
tg_id=tg_id,
|
||||||
|
timer_minutes=minutes,
|
||||||
|
timer_start=timer_start,
|
||||||
|
timer_end=timer_end
|
||||||
|
)
|
||||||
|
session.add(user_timer)
|
||||||
|
|
||||||
|
await session.commit()
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"Ошибка обновления таймера пользователя {tg_id}: {e}")
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user