forked from kodorvan/stcs
TP AND SL have been converted to float. Switch control has been moved to the main settings, Removed unnecessary parameters
This commit is contained in:
@@ -12,7 +12,9 @@ logger = logging.getLogger("database")
|
|||||||
|
|
||||||
async_engine = create_async_engine(DATABASE_URL, echo=False)
|
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():
|
async def init_db():
|
||||||
|
@@ -1,6 +1,15 @@
|
|||||||
from sqlalchemy.ext.declarative import declarative_base
|
from sqlalchemy.ext.declarative import declarative_base
|
||||||
from sqlalchemy.ext.asyncio import AsyncAttrs
|
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
|
from sqlalchemy.orm import relationship
|
||||||
|
|
||||||
Base = declarative_base(cls=AsyncAttrs)
|
Base = declarative_base(cls=AsyncAttrs)
|
||||||
@@ -8,61 +17,77 @@ Base = declarative_base(cls=AsyncAttrs)
|
|||||||
|
|
||||||
class User(Base):
|
class User(Base):
|
||||||
"""User model."""
|
"""User model."""
|
||||||
|
|
||||||
__tablename__ = "users"
|
__tablename__ = "users"
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||||
tg_id = Column(BigInteger, nullable=False, unique=True)
|
tg_id = Column(BigInteger, nullable=False, unique=True)
|
||||||
username = Column(String, nullable=False)
|
username = Column(String, nullable=False)
|
||||||
|
|
||||||
user_api = relationship("UserApi",
|
user_api = relationship(
|
||||||
back_populates="user",
|
"UserApi",
|
||||||
cascade="all, delete-orphan",
|
back_populates="user",
|
||||||
passive_deletes=True,
|
cascade="all, delete-orphan",
|
||||||
uselist=False)
|
passive_deletes=True,
|
||||||
|
uselist=False,
|
||||||
|
)
|
||||||
|
|
||||||
user_symbol = relationship("UserSymbol",
|
user_symbol = relationship(
|
||||||
back_populates="user",
|
"UserSymbol",
|
||||||
cascade="all, delete-orphan",
|
back_populates="user",
|
||||||
passive_deletes=True,
|
cascade="all, delete-orphan",
|
||||||
uselist=False)
|
passive_deletes=True,
|
||||||
|
uselist=False,
|
||||||
|
)
|
||||||
|
|
||||||
user_additional_settings = relationship("UserAdditionalSettings",
|
user_additional_settings = relationship(
|
||||||
back_populates="user",
|
"UserAdditionalSettings",
|
||||||
cascade="all, delete-orphan",
|
back_populates="user",
|
||||||
passive_deletes=True,
|
cascade="all, delete-orphan",
|
||||||
uselist=False)
|
passive_deletes=True,
|
||||||
|
uselist=False,
|
||||||
|
)
|
||||||
|
|
||||||
user_risk_management = relationship("UserRiskManagement",
|
user_risk_management = relationship(
|
||||||
back_populates="user",
|
"UserRiskManagement",
|
||||||
cascade="all, delete-orphan",
|
back_populates="user",
|
||||||
passive_deletes=True,
|
cascade="all, delete-orphan",
|
||||||
uselist=False)
|
passive_deletes=True,
|
||||||
|
uselist=False,
|
||||||
|
)
|
||||||
|
|
||||||
user_conditional_settings = relationship("UserConditionalSettings",
|
user_conditional_settings = relationship(
|
||||||
back_populates="user",
|
"UserConditionalSettings",
|
||||||
cascade="all, delete-orphan",
|
back_populates="user",
|
||||||
passive_deletes=True,
|
cascade="all, delete-orphan",
|
||||||
uselist=False)
|
passive_deletes=True,
|
||||||
|
uselist=False,
|
||||||
|
)
|
||||||
|
|
||||||
user_deals = relationship("UserDeals",
|
user_deals = relationship(
|
||||||
back_populates="user",
|
"UserDeals",
|
||||||
cascade="all, delete-orphan",
|
back_populates="user",
|
||||||
passive_deletes=True)
|
cascade="all, delete-orphan",
|
||||||
|
passive_deletes=True,
|
||||||
|
)
|
||||||
|
|
||||||
user_auto_trading = relationship("UserAutoTrading",
|
user_auto_trading = relationship(
|
||||||
back_populates="user",
|
"UserAutoTrading",
|
||||||
cascade="all, delete-orphan",
|
back_populates="user",
|
||||||
passive_deletes=True)
|
cascade="all, delete-orphan",
|
||||||
|
passive_deletes=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class UserApi(Base):
|
class UserApi(Base):
|
||||||
"""User API model."""
|
"""User API model."""
|
||||||
|
|
||||||
__tablename__ = "user_api"
|
__tablename__ = "user_api"
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||||
user_id = Column(Integer,
|
user_id = Column(
|
||||||
ForeignKey("users.id", ondelete="CASCADE"),
|
Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False, unique=True
|
||||||
nullable=False, unique=True)
|
)
|
||||||
api_key = Column(String, nullable=False)
|
api_key = Column(String, nullable=False)
|
||||||
api_secret = Column(String, nullable=False)
|
api_secret = Column(String, nullable=False)
|
||||||
|
|
||||||
@@ -71,12 +96,13 @@ class UserApi(Base):
|
|||||||
|
|
||||||
class UserSymbol(Base):
|
class UserSymbol(Base):
|
||||||
"""User symbol model."""
|
"""User symbol model."""
|
||||||
|
|
||||||
__tablename__ = "user_symbol"
|
__tablename__ = "user_symbol"
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||||
user_id = Column(Integer,
|
user_id = Column(
|
||||||
ForeignKey("users.id", ondelete="CASCADE"),
|
Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False, unique=True
|
||||||
nullable=False, unique=True)
|
)
|
||||||
symbol = Column(String, nullable=False, default="BTCUSDT")
|
symbol = Column(String, nullable=False, default="BTCUSDT")
|
||||||
|
|
||||||
user = relationship("User", back_populates="user_symbol")
|
user = relationship("User", back_populates="user_symbol")
|
||||||
@@ -84,12 +110,13 @@ class UserSymbol(Base):
|
|||||||
|
|
||||||
class UserAdditionalSettings(Base):
|
class UserAdditionalSettings(Base):
|
||||||
"""User additional settings model."""
|
"""User additional settings model."""
|
||||||
|
|
||||||
__tablename__ = "user_additional_settings"
|
__tablename__ = "user_additional_settings"
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||||
user_id = Column(Integer,
|
user_id = Column(
|
||||||
ForeignKey("users.id", ondelete="CASCADE"),
|
Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False, unique=True
|
||||||
nullable=False, unique=True)
|
)
|
||||||
trade_mode = Column(String, nullable=False, default="Merged_Single")
|
trade_mode = Column(String, nullable=False, default="Merged_Single")
|
||||||
switch_side = Column(String, nullable=False, default="По направлению")
|
switch_side = Column(String, nullable=False, default="По направлению")
|
||||||
trigger_price = Column(Float, nullable=False, default=0.0)
|
trigger_price = Column(Float, nullable=False, default=0.0)
|
||||||
@@ -104,12 +131,13 @@ class UserAdditionalSettings(Base):
|
|||||||
|
|
||||||
class UserRiskManagement(Base):
|
class UserRiskManagement(Base):
|
||||||
"""User risk management model."""
|
"""User risk management model."""
|
||||||
|
|
||||||
__tablename__ = "user_risk_management"
|
__tablename__ = "user_risk_management"
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||||
user_id = Column(Integer,
|
user_id = Column(
|
||||||
ForeignKey("users.id", ondelete="CASCADE"),
|
Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False, unique=True
|
||||||
nullable=False, unique=True)
|
)
|
||||||
take_profit_percent = Column(Float, nullable=False, default=1)
|
take_profit_percent = Column(Float, nullable=False, default=1)
|
||||||
stop_loss_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_fee = Column(String, nullable=False, default="Yes_commission_fee")
|
||||||
@@ -119,12 +147,13 @@ class UserRiskManagement(Base):
|
|||||||
|
|
||||||
class UserConditionalSettings(Base):
|
class UserConditionalSettings(Base):
|
||||||
"""User conditional settings model."""
|
"""User conditional settings model."""
|
||||||
|
|
||||||
__tablename__ = "user_conditional_settings"
|
__tablename__ = "user_conditional_settings"
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||||
user_id = Column(Integer,
|
user_id = Column(
|
||||||
ForeignKey("users.id", ondelete="CASCADE"),
|
Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False, unique=True
|
||||||
nullable=False, unique=True)
|
)
|
||||||
|
|
||||||
timer_start = Column(Integer, nullable=False, default=0)
|
timer_start = Column(Integer, nullable=False, default=0)
|
||||||
timer_end = Column(Integer, nullable=False, default=0)
|
timer_end = Column(Integer, nullable=False, default=0)
|
||||||
@@ -134,12 +163,13 @@ class UserConditionalSettings(Base):
|
|||||||
|
|
||||||
class UserDeals(Base):
|
class UserDeals(Base):
|
||||||
"""User deals model."""
|
"""User deals model."""
|
||||||
|
|
||||||
__tablename__ = "user_deals"
|
__tablename__ = "user_deals"
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||||
user_id = Column(Integer,
|
user_id = Column(
|
||||||
ForeignKey("users.id", ondelete="CASCADE"),
|
Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False
|
||||||
nullable=False)
|
)
|
||||||
current_step = Column(Integer, nullable=True)
|
current_step = Column(Integer, nullable=True)
|
||||||
symbol = Column(String, nullable=True)
|
symbol = Column(String, nullable=True)
|
||||||
trade_mode = Column(String, nullable=True)
|
trade_mode = Column(String, nullable=True)
|
||||||
@@ -157,19 +187,18 @@ class UserDeals(Base):
|
|||||||
|
|
||||||
user = relationship("User", back_populates="user_deals")
|
user = relationship("User", back_populates="user_deals")
|
||||||
|
|
||||||
__table_args__ = (
|
__table_args__ = (UniqueConstraint("user_id", "symbol", name="uq_user_symbol"),)
|
||||||
UniqueConstraint('user_id', 'symbol', name='uq_user_symbol'),
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class UserAutoTrading(Base):
|
class UserAutoTrading(Base):
|
||||||
"""User auto trading model."""
|
"""User auto trading model."""
|
||||||
|
|
||||||
__tablename__ = "user_auto_trading"
|
__tablename__ = "user_auto_trading"
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||||
user_id = Column(Integer,
|
user_id = Column(
|
||||||
ForeignKey("users.id", ondelete="CASCADE"),
|
Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False
|
||||||
nullable=False)
|
)
|
||||||
symbol = Column(String, nullable=True)
|
symbol = Column(String, nullable=True)
|
||||||
auto_trading = Column(Boolean, nullable=True)
|
auto_trading = Column(Boolean, nullable=True)
|
||||||
fee = Column(Float, nullable=True)
|
fee = Column(Float, nullable=True)
|
||||||
|
Reference in New Issue
Block a user