| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- from typing import Optional, List
- from pydantic import BaseModel
- from datetime import datetime
- # Distribution Schemas
- class ClientDistributionBase(BaseModel):
- name: str
- description: Optional[str] = None
- icon_url: Optional[str] = None
- class ClientDistributionCreate(ClientDistributionBase):
- pass
- class ClientDistributionUpdate(BaseModel):
- name: Optional[str] = None
- description: Optional[str] = None
- icon_url: Optional[str] = None
- class ClientDistributionResponse(ClientDistributionBase):
- id: int
- owner_id: int
- created_at: datetime
- updated_at: Optional[datetime] = None
- icon_object_key: Optional[str] = None # 原始 object_key,编辑时回传用
- class Config:
- from_attributes = True
- class ClientDistributionList(BaseModel):
- total: int
- items: List[ClientDistributionResponse]
- # Version Schemas
- class ClientVersionBase(BaseModel):
- version_code: str
- version_name: Optional[str] = None
- release_notes: Optional[str] = None
- platform: Optional[str] = None
- class ClientVersionCreate(ClientVersionBase):
- object_key: str
- file_size: Optional[int] = None
- class ClientVersionUpdate(BaseModel):
- version_name: Optional[str] = None
- release_notes: Optional[str] = None
- platform: Optional[str] = None
- class ClientVersionResponse(ClientVersionBase):
- id: int
- distribution_id: int
- object_key: str
- file_size: Optional[int] = None
- created_at: datetime
- class Config:
- from_attributes = True
- class ClientVersionList(BaseModel):
- total: int
- items: List[ClientVersionResponse]
- # Open API - Public download page
- class LatestVersionInfo(BaseModel):
- id: int
- version_code: str
- version_name: Optional[str] = None
- release_notes: Optional[str] = None
- file_size: Optional[int] = None
- platform: Optional[str] = None
- created_at: datetime
- download_url: str # Pre-signed URL
- class DistributionPublicResponse(BaseModel):
- id: int
- name: str
- description: Optional[str] = None
- icon_url: Optional[str] = None
- latest_version: Optional[LatestVersionInfo] = None
|