From a43fc6a66b412c0208b4bc5173f1e845b011059c Mon Sep 17 00:00:00 2001 From: algizn97 Date: Sat, 25 Oct 2025 18:47:07 +0500 Subject: [PATCH] Added the side parameter and the request --- database/models.py | 1 + database/request.py | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/database/models.py b/database/models.py index 6dd8865..f08f49e 100644 --- a/database/models.py +++ b/database/models.py @@ -92,6 +92,7 @@ class UserAdditionalSettings(Base): nullable=False, unique=True) trade_mode = Column(String, nullable=False, default="Merged_Single") switch_side = Column(String, nullable=False, default="По направлению") + side = Column(String, nullable=False, default="Buy") trigger_price = Column(Float, nullable=False, default=0.0) margin_type = Column(String, nullable=False, default="ISOLATED_MARGIN") leverage = Column(String, nullable=False, default="10") diff --git a/database/request.py b/database/request.py index 39a6b4b..ab48782 100644 --- a/database/request.py +++ b/database/request.py @@ -358,6 +358,45 @@ async def set_switch_side(tg_id: int, switch_side: str) -> bool: return False +async def set_side(tg_id: int, side: str) -> bool: + """ + Set side for a user in the database. + :param tg_id: Telegram user ID + :param side: "BUY" or "SELL" + :return: True if successful, False otherwise + """ + try: + async with async_session() as session: + result = await session.execute( + select(User) + .options(joinedload(User.user_additional_settings)) + .filter_by(tg_id=tg_id) + ) + user = result.scalars().first() + + if user: + if user.user_additional_settings: + # Updating existing record + user.user_additional_settings.side = side + else: + # Creating new record + user_additional_settings = UserAdditionalSettings( + side=side, + user=user, + ) + session.add(user_additional_settings) + + await session.commit() + logger.info("User side 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 side for user %s: %s", tg_id, e) + return False + + async def set_leverage(tg_id: int, leverage: str) -> bool: """ Set leverage for a user in the database.