| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- from __future__ import annotations
- from typing import TYPE_CHECKING, Optional
- from pydantic import BaseModel, Field
- if TYPE_CHECKING:
- from app.models.export_record import ExportRecord
- # ------------------------------------------------------------------ #
- # 导出请求 / 响应
- # ------------------------------------------------------------------ #
- class ExportDocRequest(BaseModel):
- document_id: str = Field(..., alias="documentId")
- style_id: Optional[str] = Field(None, alias="styleId")
- model_config = {"populate_by_name": True}
- class ExportDocResponse(BaseModel):
- record_id: str = Field(..., serialization_alias="recordId")
- download_url: str = Field(..., serialization_alias="downloadUrl")
- file_name: str = Field(..., serialization_alias="fileName")
- style_id: str = Field(..., serialization_alias="styleId")
- warning: Optional[str] = Field(None, serialization_alias="warning")
- model_config = {"populate_by_name": True}
- # ------------------------------------------------------------------ #
- # 导出记录
- # ------------------------------------------------------------------ #
- class ExportRecordSchema(BaseModel):
- record_id: str = Field(..., serialization_alias="recordId")
- user_id: str = Field(..., serialization_alias="userId")
- file_name: str = Field(..., serialization_alias="fileName")
- file_size: int = Field(..., serialization_alias="fileSize")
- download_url: str = Field(..., serialization_alias="downloadUrl")
- document_id: Optional[str] = Field(None, serialization_alias="documentId")
- style_id: str = Field(..., serialization_alias="styleId")
- created_at: int = Field(..., serialization_alias="createdAt")
- model_config = {"populate_by_name": True}
- @classmethod
- def from_record(cls, r: "ExportRecord") -> "ExportRecordSchema":
- return cls(
- record_id=r.id,
- user_id=r.user_id,
- file_name=r.file_name,
- file_size=r.file_size,
- download_url=r.download_url,
- document_id=r.document_id,
- style_id=r.style_id,
- created_at=int(r.created_at.timestamp() * 1000),
- )
- class PaginationSchema(BaseModel):
- page: int
- page_size: int = Field(..., serialization_alias="pageSize")
- total: int
- total_pages: int = Field(..., serialization_alias="totalPages")
- model_config = {"populate_by_name": True}
- class ExportRecordListResponse(BaseModel):
- records: list[ExportRecordSchema]
- pagination: PaginationSchema
|