from typing import Optional from pydantic import BaseModel, Field from datetime import datetime import enum # Import here to avoid circular imports from app.schemas.bot import Bot class BotPurchaseStatus(str, enum.Enum): RUNNING = "running" COMPLETED = "completed" CANCELLED = "cancelled" class BotPurchaseBase(BaseModel): bot_id: int amount: float = Field(..., gt=0) expected_roi_amount: float class BotPurchaseCreate(BotPurchaseBase): user_id: int start_time: datetime = datetime.utcnow() end_time: datetime status: BotPurchaseStatus = BotPurchaseStatus.RUNNING class BotPurchaseUpdate(BaseModel): status: Optional[BotPurchaseStatus] = None class BotPurchaseInDBBase(BotPurchaseBase): id: int user_id: int start_time: datetime end_time: datetime status: BotPurchaseStatus created_at: datetime updated_at: datetime class Config: orm_mode = True class BotPurchase(BotPurchaseInDBBase): pass class BotPurchaseRequest(BaseModel): amount: float = Field(..., gt=0) class BotPurchaseWithBot(BotPurchase): bot: Bot class Config: orm_mode = True