diff --git a/database/models.py b/database/models.py index 54fb797..0fc5305 100644 --- a/database/models.py +++ b/database/models.py @@ -166,6 +166,7 @@ class UserDeals(Base): switch_side_mode = Column(Boolean, nullable=True) limit_price = Column(Float, nullable=True) trigger_price = Column(Float, nullable=True) + fee = Column(Float, nullable=True) user = relationship("User", back_populates="user_deals") diff --git a/database/request.py b/database/request.py index 28e7d0e..a617daf 100644 --- a/database/request.py +++ b/database/request.py @@ -1219,6 +1219,34 @@ async def get_all_symbols(tg_id: int): return [] +async def set_fee_user_deal_by_symbol(tg_id: int, symbol: str, fee: float): + """Set fee for a user deal by symbol in the database.""" + try: + async with async_session() as session: + result = await session.execute(select(User).filter_by(tg_id=tg_id)) + user = result.scalars().first() + if user is None: + logger.error(f"User with tg_id={tg_id} not found") + return False + + result = await session.execute( + select(UserDeals).filter_by(user_id=user.id, symbol=symbol) + ) + record = result.scalars().first() + + if record: + record.fee = fee + else: + logger.error(f"User deal with user_id={user.id} and symbol={symbol} not found") + return False + await session.commit() + logger.info("Set fee for user %s and symbol %s", tg_id, symbol) + return True + except Exception as e: + logger.error("Error setting user deal fee for user %s and symbol %s: %s", tg_id, symbol, e) + return False + + # USER AUTO TRADING async def get_user_auto_trading(tg_id: int, symbol: str):