| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- from datetime import datetime
- from pydantic import BaseModel, Field
- class FilamentBase(BaseModel):
- name: str = Field(..., min_length=1, max_length=100)
- type: str = Field(..., min_length=1, max_length=50)
- brand: str | None = None
- color: str | None = None
- color_hex: str | None = Field(None, pattern=r"^#[0-9A-Fa-f]{6}$")
- cost_per_kg: float = 25.0
- spool_weight_g: float = 1000.0
- currency: str = "USD"
- density: float | None = None
- print_temp_min: int | None = None
- print_temp_max: int | None = None
- bed_temp_min: int | None = None
- bed_temp_max: int | None = None
- class FilamentCreate(FilamentBase):
- pass
- class FilamentUpdate(BaseModel):
- name: str | None = None
- type: str | None = None
- brand: str | None = None
- color: str | None = None
- color_hex: str | None = None
- cost_per_kg: float | None = None
- spool_weight_g: float | None = None
- currency: str | None = None
- density: float | None = None
- print_temp_min: int | None = None
- print_temp_max: int | None = None
- bed_temp_min: int | None = None
- bed_temp_max: int | None = None
- class FilamentResponse(FilamentBase):
- id: int
- created_at: datetime
- updated_at: datetime
- class Config:
- from_attributes = True
- class FilamentCostCalculation(BaseModel):
- filament_id: int
- filament_name: str
- weight_grams: float
- cost: float
- currency: str
|