From 2bebada215fe01686f3c5d5dea4a06ac1912cc49 Mon Sep 17 00:00:00 2001 From: algizn97 Date: Sun, 26 Oct 2025 14:01:12 +0500 Subject: [PATCH] Added a new column and requests to them --- database/models.py | 4 ++++ database/request.py | 58 +++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 60 insertions(+), 2 deletions(-) diff --git a/database/models.py b/database/models.py index f08f49e..b7fa56f 100644 --- a/database/models.py +++ b/database/models.py @@ -114,6 +114,7 @@ class UserRiskManagement(Base): take_profit_percent = Column(Float, nullable=False, default=1) stop_loss_percent = Column(Float, nullable=False, default=1) commission_fee = Column(String, nullable=False, default="Yes_commission_fee") + commission_place = Column(String, nullable=False, default="Commission_for_qty") user = relationship("User", back_populates="user_risk_management") @@ -156,6 +157,9 @@ class UserDeals(Base): take_profit_percent = Column(Integer, nullable=True) stop_loss_percent = Column(Integer, nullable=True) trigger_price = Column(Float, nullable=True) + current_series = Column(Integer, nullable=True) + commission_fee = Column(String, nullable=True) + commission_place = Column(String, nullable=True) user = relationship("User", back_populates="user_deals") diff --git a/database/request.py b/database/request.py index ab48782..ce7265d 100644 --- a/database/request.py +++ b/database/request.py @@ -629,6 +629,7 @@ async def create_user_risk_management(tg_id: int) -> None: take_profit_percent=1.0, stop_loss_percent=1.0, commission_fee="Yes_commission_fee", + commission_place="Commission_for_qty" ) session.add(user_risk_management) await session.commit() @@ -788,6 +789,47 @@ async def set_commission_fee(tg_id: int, commission_fee: str) -> bool: return False +async def set_commission_place(tg_id: int, commission_place: str) -> bool: + """ + Set commission place for a user in the database. + :param tg_id: Telegram user ID + :param commission_place: Commission place + :return: True if successful, False otherwise + """ + try: + async with async_session() as session: + result = await session.execute( + select(User) + .options(joinedload(User.user_risk_management)) + .filter_by(tg_id=tg_id) + ) + user = result.scalars().first() + + if user: + if user.user_risk_management: + # Updating existing record + user.user_risk_management.commission_place = commission_place + else: + # Creating new record + user_risk_management = UserRiskManagement( + commission_place=commission_place, + user=user, + ) + session.add(user_risk_management) + + await session.commit() + logger.info("User commission place updated for user: %s", tg_id) + return True + else: + logger.error("User not found with tg_id: %s", tg_id) + return False + except Exception as e: + logger.error( + "Error adding/updating user commission place for user %s: %s", tg_id, e + ) + return False + + # USER CONDITIONAL SETTINGS @@ -935,6 +977,7 @@ async def set_user_deal( tg_id: int, symbol: str, current_step: int, + current_series: int, trade_mode: str, side_mode: str, margin_type: str, @@ -945,13 +988,16 @@ async def set_user_deal( max_bets_in_series: int, take_profit_percent: int, stop_loss_percent: int, - base_quantity: float + base_quantity: float, + commission_fee: str, + commission_place: str ): """ Set the user deal in the database. :param tg_id: Telegram user ID :param symbol: Symbol :param current_step: Current step + :param current_series: Current series :param trade_mode: Trade mode :param side_mode: Side mode :param margin_type: Margin type @@ -963,6 +1009,8 @@ async def set_user_deal( :param take_profit_percent: Take profit percent :param stop_loss_percent: Stop loss percent :param base_quantity: Base quantity + :param commission_fee: Commission fee + :param commission_place: Commission place :return: bool """ try: @@ -981,6 +1029,7 @@ async def set_user_deal( if deal: # Updating existing record deal.current_step = current_step + deal.current_series = current_series deal.trade_mode = trade_mode deal.side_mode = side_mode deal.margin_type = margin_type @@ -992,12 +1041,15 @@ async def set_user_deal( deal.take_profit_percent = take_profit_percent deal.stop_loss_percent = stop_loss_percent deal.base_quantity = base_quantity + deal.commission_fee = commission_fee + deal.commission_place = commission_place else: # Creating new record new_deal = UserDeals( user=user, symbol=symbol, current_step=current_step, + current_series=current_series, trade_mode=trade_mode, side_mode=side_mode, margin_type=margin_type, @@ -1008,7 +1060,9 @@ async def set_user_deal( max_bets_in_series=max_bets_in_series, take_profit_percent=take_profit_percent, stop_loss_percent=stop_loss_percent, - base_quantity=base_quantity + base_quantity=base_quantity, + commission_fee=commission_fee, + commission_place=commission_place ) session.add(new_deal)