From 466388819089a2a66fcff3165f355db50d274952 Mon Sep 17 00:00:00 2001 From: algizn97 Date: Fri, 10 Oct 2025 13:55:42 +0500 Subject: [PATCH] TP AND SL have been converted to float. Switch control has been moved to the main settings, Removed unnecessary parameters --- database/__init__.py | 4 +- database/models.py | 147 ++++++++++++++++++++++++++----------------- 2 files changed, 91 insertions(+), 60 deletions(-) diff --git a/database/__init__.py b/database/__init__.py index 9c9a679..2e672dd 100644 --- a/database/__init__.py +++ b/database/__init__.py @@ -12,7 +12,9 @@ logger = logging.getLogger("database") async_engine = create_async_engine(DATABASE_URL, echo=False) -async_session = async_sessionmaker(async_engine, class_=AsyncSession, expire_on_commit=False) +async_session = async_sessionmaker( + async_engine, class_=AsyncSession, expire_on_commit=False +) async def init_db(): diff --git a/database/models.py b/database/models.py index df8845e..0f42c39 100644 --- a/database/models.py +++ b/database/models.py @@ -1,6 +1,15 @@ from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.asyncio import AsyncAttrs -from sqlalchemy import Column, ForeignKey, Integer, String, BigInteger, Float, Boolean, UniqueConstraint +from sqlalchemy import ( + Column, + ForeignKey, + Integer, + String, + BigInteger, + Float, + Boolean, + UniqueConstraint, +) from sqlalchemy.orm import relationship Base = declarative_base(cls=AsyncAttrs) @@ -8,61 +17,77 @@ Base = declarative_base(cls=AsyncAttrs) class User(Base): """User model.""" + __tablename__ = "users" id = Column(Integer, primary_key=True, autoincrement=True) tg_id = Column(BigInteger, nullable=False, unique=True) username = Column(String, nullable=False) - user_api = relationship("UserApi", - back_populates="user", - cascade="all, delete-orphan", - passive_deletes=True, - uselist=False) + user_api = relationship( + "UserApi", + back_populates="user", + cascade="all, delete-orphan", + passive_deletes=True, + uselist=False, + ) - user_symbol = relationship("UserSymbol", - back_populates="user", - cascade="all, delete-orphan", - passive_deletes=True, - uselist=False) + user_symbol = relationship( + "UserSymbol", + back_populates="user", + cascade="all, delete-orphan", + passive_deletes=True, + uselist=False, + ) - user_additional_settings = relationship("UserAdditionalSettings", - back_populates="user", - cascade="all, delete-orphan", - passive_deletes=True, - uselist=False) + user_additional_settings = relationship( + "UserAdditionalSettings", + back_populates="user", + cascade="all, delete-orphan", + passive_deletes=True, + uselist=False, + ) - user_risk_management = relationship("UserRiskManagement", - back_populates="user", - cascade="all, delete-orphan", - passive_deletes=True, - uselist=False) + user_risk_management = relationship( + "UserRiskManagement", + back_populates="user", + cascade="all, delete-orphan", + passive_deletes=True, + uselist=False, + ) - user_conditional_settings = relationship("UserConditionalSettings", - back_populates="user", - cascade="all, delete-orphan", - passive_deletes=True, - uselist=False) + user_conditional_settings = relationship( + "UserConditionalSettings", + back_populates="user", + cascade="all, delete-orphan", + passive_deletes=True, + uselist=False, + ) - user_deals = relationship("UserDeals", - back_populates="user", - cascade="all, delete-orphan", - passive_deletes=True) + user_deals = relationship( + "UserDeals", + back_populates="user", + cascade="all, delete-orphan", + passive_deletes=True, + ) - user_auto_trading = relationship("UserAutoTrading", - back_populates="user", - cascade="all, delete-orphan", - passive_deletes=True) + user_auto_trading = relationship( + "UserAutoTrading", + back_populates="user", + cascade="all, delete-orphan", + passive_deletes=True, + ) class UserApi(Base): """User API model.""" + __tablename__ = "user_api" id = Column(Integer, primary_key=True, autoincrement=True) - user_id = Column(Integer, - ForeignKey("users.id", ondelete="CASCADE"), - nullable=False, unique=True) + user_id = Column( + Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False, unique=True + ) api_key = Column(String, nullable=False) api_secret = Column(String, nullable=False) @@ -71,12 +96,13 @@ class UserApi(Base): class UserSymbol(Base): """User symbol model.""" + __tablename__ = "user_symbol" id = Column(Integer, primary_key=True, autoincrement=True) - user_id = Column(Integer, - ForeignKey("users.id", ondelete="CASCADE"), - nullable=False, unique=True) + user_id = Column( + Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False, unique=True + ) symbol = Column(String, nullable=False, default="BTCUSDT") user = relationship("User", back_populates="user_symbol") @@ -84,12 +110,13 @@ class UserSymbol(Base): class UserAdditionalSettings(Base): """User additional settings model.""" + __tablename__ = "user_additional_settings" id = Column(Integer, primary_key=True, autoincrement=True) - user_id = Column(Integer, - ForeignKey("users.id", ondelete="CASCADE"), - nullable=False, unique=True) + user_id = Column( + Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False, unique=True + ) trade_mode = Column(String, nullable=False, default="Merged_Single") switch_side = Column(String, nullable=False, default="По направлению") trigger_price = Column(Float, nullable=False, default=0.0) @@ -104,12 +131,13 @@ class UserAdditionalSettings(Base): class UserRiskManagement(Base): """User risk management model.""" + __tablename__ = "user_risk_management" id = Column(Integer, primary_key=True, autoincrement=True) - user_id = Column(Integer, - ForeignKey("users.id", ondelete="CASCADE"), - nullable=False, unique=True) + user_id = Column( + Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False, unique=True + ) 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") @@ -119,12 +147,13 @@ class UserRiskManagement(Base): class UserConditionalSettings(Base): """User conditional settings model.""" + __tablename__ = "user_conditional_settings" id = Column(Integer, primary_key=True, autoincrement=True) - user_id = Column(Integer, - ForeignKey("users.id", ondelete="CASCADE"), - nullable=False, unique=True) + user_id = Column( + Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False, unique=True + ) timer_start = Column(Integer, nullable=False, default=0) timer_end = Column(Integer, nullable=False, default=0) @@ -134,12 +163,13 @@ class UserConditionalSettings(Base): class UserDeals(Base): """User deals model.""" + __tablename__ = "user_deals" id = Column(Integer, primary_key=True, autoincrement=True) - user_id = Column(Integer, - ForeignKey("users.id", ondelete="CASCADE"), - nullable=False) + user_id = Column( + Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False + ) current_step = Column(Integer, nullable=True) symbol = Column(String, nullable=True) trade_mode = Column(String, nullable=True) @@ -157,22 +187,21 @@ class UserDeals(Base): user = relationship("User", back_populates="user_deals") - __table_args__ = ( - UniqueConstraint('user_id', 'symbol', name='uq_user_symbol'), - ) + __table_args__ = (UniqueConstraint("user_id", "symbol", name="uq_user_symbol"),) class UserAutoTrading(Base): """User auto trading model.""" + __tablename__ = "user_auto_trading" id = Column(Integer, primary_key=True, autoincrement=True) - user_id = Column(Integer, - ForeignKey("users.id", ondelete="CASCADE"), - nullable=False) + user_id = Column( + Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False + ) symbol = Column(String, nullable=True) auto_trading = Column(Boolean, nullable=True) fee = Column(Float, nullable=True) total_fee = Column(Float, nullable=True) - user = relationship("User", back_populates="user_auto_trading") \ No newline at end of file + user = relationship("User", back_populates="user_auto_trading")