stock-tracker
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
from datetime import date, datetime
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
|
||||
|
||||
# --- Stock ---
|
||||
|
||||
class StockItem(BaseModel):
|
||||
code: str
|
||||
name: str
|
||||
|
||||
class KlineItem(BaseModel):
|
||||
date: str
|
||||
open: float
|
||||
close: float
|
||||
high: float
|
||||
low: float
|
||||
volume: float
|
||||
|
||||
class RealtimeQuote(BaseModel):
|
||||
code: str
|
||||
name: str
|
||||
price: float
|
||||
change: float # 涨跌额
|
||||
change_pct: float # 涨跌幅 %
|
||||
high: float
|
||||
low: float
|
||||
open: float
|
||||
prev_close: float
|
||||
volume: float
|
||||
amount: float
|
||||
|
||||
# --- Collection ---
|
||||
|
||||
class StockInput(BaseModel):
|
||||
code: str
|
||||
name: str
|
||||
added_date: str # YYYY-MM-DD
|
||||
|
||||
class CollectionCreate(BaseModel):
|
||||
name: str
|
||||
stocks: list[StockInput] = []
|
||||
|
||||
class CollectionUpdate(BaseModel):
|
||||
name: Optional[str] = None
|
||||
|
||||
class CollectionStockOut(BaseModel):
|
||||
model_config = {"from_attributes": True}
|
||||
id: int
|
||||
stock_code: str
|
||||
stock_name: str
|
||||
added_date: date
|
||||
|
||||
class CollectionOut(BaseModel):
|
||||
model_config = {"from_attributes": True}
|
||||
id: int
|
||||
name: str
|
||||
short_code: Optional[str]
|
||||
created_at: datetime
|
||||
stocks: list[CollectionStockOut]
|
||||
|
||||
class CollectionListItem(BaseModel):
|
||||
id: int
|
||||
name: str
|
||||
stock_count: int
|
||||
short_code: Optional[str]
|
||||
created_at: datetime
|
||||
|
||||
# --- Share ---
|
||||
|
||||
class ShareResponse(BaseModel):
|
||||
short_code: str
|
||||
url: str
|
||||
|
||||
class CollectionShareOut(BaseModel):
|
||||
collection: CollectionOut
|
||||
stocks_data: dict # code -> {kline: [...], realtime: {...}}
|
||||
Reference in New Issue
Block a user