Add demo account database models
Этот коммит содержится в:
@@ -0,0 +1,38 @@
|
|||||||
|
from datetime import datetime, timezone
|
||||||
|
from sqlalchemy import DateTime, Float, Integer, String
|
||||||
|
from sqlalchemy.orm import Mapped, mapped_column
|
||||||
|
|
||||||
|
from app.db import Base
|
||||||
|
|
||||||
|
|
||||||
|
class DemoAccountState(Base):
|
||||||
|
__tablename__ = 'demo_account_state'
|
||||||
|
|
||||||
|
id: Mapped[int] = mapped_column(Integer, primary_key=True, default=1)
|
||||||
|
quote_asset: Mapped[str] = mapped_column(String(16), nullable=False)
|
||||||
|
balance: Mapped[float] = mapped_column(Float, nullable=False)
|
||||||
|
equity: Mapped[float] = mapped_column(Float, nullable=False)
|
||||||
|
realized_pnl: Mapped[float] = mapped_column(Float, nullable=False, default=0.0)
|
||||||
|
updated_at: Mapped[datetime] = mapped_column(
|
||||||
|
DateTime(timezone=True),
|
||||||
|
default=lambda: datetime.now(timezone.utc),
|
||||||
|
onupdate=lambda: datetime.now(timezone.utc),
|
||||||
|
nullable=False,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class DemoTradeRecord(Base):
|
||||||
|
__tablename__ = 'demo_trades'
|
||||||
|
|
||||||
|
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
|
||||||
|
market: Mapped[str] = mapped_column(String(32), nullable=False, index=True)
|
||||||
|
side: Mapped[str] = mapped_column(String(8), nullable=False)
|
||||||
|
price: Mapped[float] = mapped_column(Float, nullable=False)
|
||||||
|
amount: Mapped[float] = mapped_column(Float, nullable=False)
|
||||||
|
quote_amount: Mapped[float] = mapped_column(Float, nullable=False)
|
||||||
|
reason: Mapped[str] = mapped_column(String(512), nullable=False)
|
||||||
|
created_at: Mapped[datetime] = mapped_column(
|
||||||
|
DateTime(timezone=True),
|
||||||
|
default=lambda: datetime.now(timezone.utc),
|
||||||
|
nullable=False,
|
||||||
|
)
|
||||||
Ссылка в новой задаче
Block a user