diff --git a/app/telegram/database/models.py b/app/telegram/database/models.py index 6b6ab01..fdb6f6e 100644 --- a/app/telegram/database/models.py +++ b/app/telegram/database/models.py @@ -158,6 +158,8 @@ class User_Main_Settings(Base): trading_mode = mapped_column(ForeignKey("trading_modes.mode")) margin_type = mapped_column(ForeignKey("margin_types.type")) + switch_mode_enabled = mapped_column(String(15), default="Выключен") + switch_state = mapped_column(String(10), default='Long') size_leverage = mapped_column(Integer(), default=1) starting_quantity = mapped_column(Integer(), default=1) martingale_factor = mapped_column(Integer(), default=1) @@ -212,7 +214,7 @@ class User_Condition_Settings(Base): tg_id = mapped_column(ForeignKey("user_telegram_id.tg_id")) - trigger = mapped_column(ForeignKey("triggers.trigger")) + trigger = mapped_column(String(15), default='Ручной') filter_time = mapped_column(String(25), default='???') filter_volatility = mapped_column(Boolean, default=False) external_cues = mapped_column(Boolean, default=False) @@ -309,7 +311,7 @@ async def async_main(): logger.info("Заполение таблицы типов маржи") await conn.execute(Margin_type.__table__.insert().values(type=type)) - triggers = ['Ручной', 'Автоматический', 'TradingView'] + triggers = ['Ручной', 'Автоматический'] for trigger in triggers: result = await conn.execute(select(Trigger).where(Trigger.trigger == trigger)) if not result.first(): diff --git a/app/telegram/database/requests.py b/app/telegram/database/requests.py index b9e2693..d0b108a 100644 --- a/app/telegram/database/requests.py +++ b/app/telegram/database/requests.py @@ -291,10 +291,10 @@ async def get_for_registration_margin_type(): return type -async def get_for_registration_trigger(): +async def get_for_registration_trigger(tg_id): """Получить триггер по умолчанию.""" async with async_session() as session: - trigger = await session.scalar(select(Trigger.trigger).where(Trigger.id == 1)) + trigger = await session.scalar(select(UCS.trigger).where(tg_id == tg_id)) return trigger @@ -308,6 +308,8 @@ async def get_user_main_settings(tg_id): trading_mode = await session.scalar(select(UMS.trading_mode).where(UMS.tg_id == tg_id)) margin_mode = await session.scalar(select(UMS.margin_type).where(UMS.tg_id == tg_id)) + switch_mode_enabled = await session.scalar(select(UMS.switch_mode_enabled).where(UMS.tg_id == tg_id)) + switch_state = await session.scalar(select(UMS.switch_state).where(UMS.tg_id == tg_id)) size_leverage = await session.scalar(select(UMS.size_leverage).where(UMS.tg_id == tg_id)) starting_quantity = await session.scalar(select(UMS.starting_quantity).where(UMS.tg_id == tg_id)) martingale_factor = await session.scalar(select(UMS.martingale_factor).where(UMS.tg_id == tg_id)) @@ -319,6 +321,8 @@ async def get_user_main_settings(tg_id): data = { 'trading_mode': trading_mode, 'margin_type': margin_mode, + 'switch_mode_enabled': switch_mode_enabled, + 'switch_state': switch_state, 'size_leverage': size_leverage, 'starting_quantity': starting_quantity, 'martingale_factor': martingale_factor, @@ -547,3 +551,27 @@ async def update_martingale_step(tg_id, step): await session.execute(update(UMS).where(UMS.tg_id == tg_id).values(martingale_step=step)) await session.commit() + + +async def update_switch_mode_enabled(tg_id, switch_mode): + """Обновить режим переключения пользователя.""" + async with async_session() as session: + await session.execute(update(UMS).where(UMS.tg_id == tg_id).values(switch_mode_enabled=switch_mode)) + + await session.commit() + + +async def update_switch_state(tg_id, switch_state): + """Обновить состояние переключения пользователя.""" + async with async_session() as session: + await session.execute(update(UMS).where(UMS.tg_id == tg_id).values(switch_state=switch_state)) + + await session.commit() + + +async def update_trigger(tg_id, trigger): + """Обновить триггер пользователя.""" + async with async_session() as session: + await session.execute(update(UCS).where(UCS.tg_id == tg_id).values(trigger=trigger)) + + await session.commit() \ No newline at end of file