add exchange table
All checks were successful
Backend CI / unit-test (push) Successful in 35s

This commit is contained in:
2025-09-22 14:33:32 +02:00
parent 76cc967c42
commit 1fbc93353d
17 changed files with 446 additions and 92 deletions

View File

@@ -72,7 +72,8 @@ class Trades(SQLModel, table=True):
# allow null while user may omit friendly_name; uniqueness enforced per-user by constraint
friendly_name: str | None = Field(default=None, sa_column=Column(Text, nullable=True))
symbol: str = Field(sa_column=Column(Text, nullable=False))
exchange: str = Field(sa_column=Column(Text, nullable=False))
exchange_id: int = Field(foreign_key="exchanges.id", nullable=False, index=True)
exchange: "Exchanges" = Relationship(back_populates="trades")
underlying_currency: UnderlyingCurrency = Field(sa_column=Column(Text, nullable=False))
trade_type: TradeType = Field(sa_column=Column(Text, nullable=False))
trade_strategy: TradeStrategy = Field(sa_column=Column(Text, nullable=False))
@@ -101,7 +102,8 @@ class Cycles(SQLModel, table=True):
user_id: int = Field(foreign_key="users.id", nullable=False, index=True)
friendly_name: str | None = Field(default=None, sa_column=Column(Text, nullable=True))
symbol: str = Field(sa_column=Column(Text, nullable=False))
exchange: str = Field(sa_column=Column(Text, nullable=False))
exchange_id: int = Field(foreign_key="exchanges.id", nullable=False, index=True)
exchange: "Exchanges" = Relationship(back_populates="cycles")
underlying_currency: UnderlyingCurrency = Field(sa_column=Column(Text, nullable=False))
status: CycleStatus = Field(sa_column=Column(Text, nullable=False))
funding_source: FundingSource = Field(sa_column=Column(Text, nullable=True))
@@ -113,6 +115,15 @@ class Cycles(SQLModel, table=True):
trades: list["Trades"] = Relationship(back_populates="cycle")
class Exchanges(SQLModel, table=True):
__tablename__ = "exchanges"
id: int | None = Field(default=None, primary_key=True)
name: str = Field(sa_column=Column(Text, nullable=False, unique=True))
notes: str | None = Field(default=None, sa_column=Column(Text, nullable=True))
trades: list["Trades"] = Relationship(back_populates="exchange")
cycles: list["Cycles"] = Relationship(back_populates="exchange")
class Users(SQLModel, table=True):
__tablename__ = "users"
id: int | None = Field(default=None, primary_key=True)