| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- from datetime import datetime
- from pydantic import BaseModel
- class ArchiveBase(BaseModel):
- print_name: str | None = None
- is_favorite: bool | None = None
- tags: str | None = None
- notes: str | None = None
- cost: float | None = None
- failure_reason: str | None = None
- class ArchiveUpdate(ArchiveBase):
- printer_id: int | None = None
- class ArchiveResponse(BaseModel):
- id: int
- printer_id: int | None
- filename: str
- file_path: str
- file_size: int
- thumbnail_path: str | None
- timelapse_path: str | None
- print_name: str | None
- print_time_seconds: int | None
- filament_used_grams: float | None
- filament_type: str | None
- filament_color: str | None
- layer_height: float | None
- nozzle_diameter: float | None
- bed_temperature: int | None
- nozzle_temperature: int | None
- status: str
- started_at: datetime | None
- completed_at: datetime | None
- extra_data: dict | None
- makerworld_url: str | None
- designer: str | None
- is_favorite: bool
- tags: str | None
- notes: str | None
- cost: float | None
- photos: list | None
- failure_reason: str | None
- created_at: datetime
- class Config:
- from_attributes = True
- class ArchiveStats(BaseModel):
- total_prints: int
- successful_prints: int
- failed_prints: int
- total_print_time_hours: float
- total_filament_grams: float
- total_cost: float
- prints_by_filament_type: dict
- prints_by_printer: dict
|