FundingRate / app /models /watchlist.py
Cuong2004's picture
first times
7b8993a
"""Pydantic models for Watchlist and FR History."""
from datetime import datetime
from typing import Optional, List
from pydantic import BaseModel, Field
class WatchlistItem(BaseModel):
"""Watchlist item model."""
symbol: str = Field(..., description="Trading pair symbol, e.g., BTC_USDT")
added_at: datetime = Field(default_factory=datetime.utcnow)
notes: Optional[str] = Field(None, description="User notes about this coin")
class WatchlistItemWithFR(WatchlistItem):
"""Watchlist item with current FR data."""
funding_rate: Optional[float] = None
funding_rate_percent: Optional[str] = None
last_price: Optional[float] = None
change_24h: Optional[float] = None
signal: Optional[str] = None
class WatchlistResponse(BaseModel):
"""Response model for watchlist endpoints."""
success: bool = True
data: List[WatchlistItemWithFR]
count: int
class AddWatchlistRequest(BaseModel):
"""Request model for adding to watchlist."""
symbol: str
notes: Optional[str] = None
class FRHistoryRecord(BaseModel):
"""FR history record model."""
symbol: str
funding_rate: float
funding_rate_percent: str
last_price: float
recorded_at: datetime = Field(default_factory=datetime.utcnow)
class FRHistoryResponse(BaseModel):
"""Response model for FR history endpoint."""
success: bool = True
symbol: str
data: List[FRHistoryRecord]
count: int