38 lines
843 B
Python
38 lines
843 B
Python
from pydantic import BaseModel, validator
|
|
from typing import Literal, Optional
|
|
|
|
|
|
class SipFrequency(BaseModel):
|
|
value: int
|
|
unit: Literal["days", "minutes"]
|
|
|
|
class StrategyStartRequest(BaseModel):
|
|
strategy_name: str
|
|
initial_cash: Optional[float] = None
|
|
sip_amount: float
|
|
sip_frequency: SipFrequency
|
|
mode: Literal["PAPER"]
|
|
|
|
@validator("initial_cash")
|
|
def validate_cash(cls, v):
|
|
if v is None:
|
|
return v
|
|
if v < 10000:
|
|
raise ValueError("Initial cash must be at least 10,000")
|
|
return v
|
|
|
|
class AuthPayload(BaseModel):
|
|
email: Optional[str] = None
|
|
username: Optional[str] = None
|
|
password: Optional[str] = None
|
|
|
|
|
|
class PasswordResetRequest(BaseModel):
|
|
email: str
|
|
|
|
|
|
class PasswordResetConfirm(BaseModel):
|
|
email: str
|
|
otp: str
|
|
new_password: str
|