Spaces:
Sleeping
Sleeping
| """ | |
| Pydantic schemas for API validation | |
| """ | |
| from pydantic import BaseModel, Field | |
| from typing import Optional, List | |
| from datetime import datetime | |
| class HFConfigUpdate(BaseModel): | |
| """Schema for updating HF configuration""" | |
| hf_token: Optional[str] = None | |
| source_all_repo: Optional[str] = None | |
| source_ato_repo: Optional[str] = None | |
| target_repo: Optional[str] = None | |
| upload_batch_size: Optional[int] = None | |
| max_uploads_per_hour: Optional[int] = None | |
| class Config: | |
| from_attributes = True | |
| class HFConfigResponse(BaseModel): | |
| """Schema for HF configuration response""" | |
| id: int | |
| hf_token: Optional[str] = None | |
| source_all_repo: str | |
| source_ato_repo: str | |
| target_repo: str | |
| upload_batch_size: int | |
| max_uploads_per_hour: int | |
| created_at: datetime | |
| updated_at: datetime | |
| class Config: | |
| from_attributes = True | |
| class UploadQueueItem(BaseModel): | |
| """Schema for upload queue item""" | |
| id: int | |
| file_name: str | |
| file_path: str | |
| file_size: int | |
| status: str | |
| uploaded_at: Optional[datetime] = None | |
| failure_reason: Optional[str] = None | |
| retry_count: int | |
| max_retries: int | |
| created_at: datetime | |
| updated_at: datetime | |
| class Config: | |
| from_attributes = True | |
| class UploadQueueStats(BaseModel): | |
| """Schema for upload queue statistics""" | |
| pending: int | |
| uploading: int | |
| completed: int | |
| failed: int | |
| total: int | |
| class ProcessingStateResponse(BaseModel): | |
| """Schema for processing state response""" | |
| id: int | |
| status: str | |
| total_files: int | |
| processed_files: int | |
| matched_pairs: int | |
| error_message: Optional[str] = None | |
| started_at: Optional[datetime] = None | |
| completed_at: Optional[datetime] = None | |
| created_at: datetime | |
| updated_at: datetime | |
| class Config: | |
| from_attributes = True | |
| class ProcessRequest(BaseModel): | |
| """Schema for process request""" | |
| max_files: int = Field(default=0, description="0 means process all files") | |
| class UploadRequest(BaseModel): | |
| """Schema for upload request""" | |
| file_ids: List[int] = Field(description="List of upload queue item IDs to upload") | |
| batch_size: int = Field(default=10, description="Number of files per batch") | |
| class FilePreviewRequest(BaseModel): | |
| """Schema for file preview request""" | |
| filename: str | |
| class FilePreviewResponse(BaseModel): | |
| """Schema for file preview response""" | |
| filename: str | |
| size: int | |
| content: dict | |
| class RateLimitStatus(BaseModel): | |
| """Schema for rate limit status""" | |
| can_upload: bool | |
| remaining_uploads: int | |
| resume_time: Optional[datetime] = None | |
| class UploadStatus(BaseModel): | |
| """Schema for upload status""" | |
| rate_limit: RateLimitStatus | |
| config: Optional[HFConfigResponse] = None | |
| class ErrorLogResponse(BaseModel): | |
| """Schema for error log response""" | |
| id: int | |
| file_name: str | |
| error_code: Optional[str] = None | |
| error_message: Optional[str] = None | |
| status_code: Optional[int] = None | |
| retryable: bool | |
| created_at: datetime | |
| class Config: | |
| from_attributes = True | |