| from pydantic import BaseModel, Field | |
| from typing import Optional, List | |
| from decimal import Decimal | |
| class BaseResponse(BaseModel): | |
| code: int | |
| message: str | |
| payload: Optional[dict] = None | |
| class CreatePlanRequest(BaseModel): | |
| name: str = Field(..., description="Name of the subscription plan") | |
| amount: Decimal = Field(..., description="Cost of the plan") | |
| duration: int = Field(..., description="Duration of the subscription in hours") | |
| download_speed: float = Field(..., description="Download speed in Mbps") | |
| upload_speed: float = Field(..., description="Upload speed in Mbps") | |
| is_promo: Optional[bool] = Field(False, description="is it a promo") | |
| promo_days: Optional[int] = Field(None, description="promotion days") | |
| class UpdatePlanRequest(BaseModel): | |
| name: Optional[str] = Field(None, description="Name of the subscription plan") | |
| amount: Optional[Decimal] = Field(None, description="Cost of the plan") | |
| duration: Optional[int] = Field( | |
| None, description="Duration of the subscription in hours" | |
| ) | |
| download_speed: Optional[float] = Field(None, description="Download speed in Mbps") | |
| upload_speed: Optional[float] = Field(None, description="Upload speed in Mbps") | |
| class PlanResponse(BaseModel): | |
| id: str | |
| name: str | |
| amount: Decimal | |
| duration: int | |
| download_speed: float | |
| upload_speed: float | |
| class Config: | |
| from_attributes = True | |
| class PlanListResponse(BaseModel): | |
| plans: List[PlanResponse] | |
| total_count: int | |
| class Config: | |
| from_attributes = True | |