Files
trading-journal/backend/trading_journal/dto.py
Tianyu Liu 1750401278
All checks were successful
Backend CI / unit-test (push) Successful in 34s
several changes:
* api calls for auth

* exchange now bind to user
2025-09-22 22:51:59 +02:00

85 lines
1.7 KiB
Python

from __future__ import annotations
from datetime import date, datetime # noqa: TC003
from typing import TYPE_CHECKING
from pydantic import BaseModel
from sqlmodel import SQLModel
if TYPE_CHECKING:
from trading_journal.models import TradeStrategy, TradeType, UnderlyingCurrency
class TradeBase(SQLModel):
user_id: int
friendly_name: str | None
symbol: str
exchange: str
underlying_currency: UnderlyingCurrency
trade_type: TradeType
trade_strategy: TradeStrategy
trade_date: date
trade_time_utc: datetime
quantity: int
price_cents: int
gross_cash_flow_cents: int
commission_cents: int
net_cash_flow_cents: int
notes: str | None
cycle_id: int | None = None
class TradeCreate(TradeBase):
expiry_date: date | None = None
strike_price_cents: int | None = None
is_invalidated: bool = False
invalidated_at: datetime | None = None
replaced_by_trade_id: int | None = None
class TradeRead(TradeBase):
id: int
is_invalidated: bool
invalidated_at: datetime | None
class UserBase(SQLModel):
username: str
is_active: bool = True
class UserCreate(UserBase):
password: str
class UserLogin(BaseModel):
username: str
password: str
class UserRead(UserBase):
id: int
class SessionsBase(SQLModel):
user_id: int
class SessionRead(SessionsBase):
id: int
expires_at: datetime
last_seen_at: datetime | None
last_used_ip: str | None
user_agent: str | None
class SessionsCreate(SessionsBase):
expires_at: datetime
class SessionsUpdate(SQLModel):
expires_at: datetime | None = None
last_seen_at: datetime | None = None
last_used_ip: str | None = None
user_agent: str | None = None