78 lines
1.9 KiB
Python
78 lines
1.9 KiB
Python
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, ConfigDict, field_validator
|
|
|
|
from app.schemas.manufacturer import ManufacturerRead
|
|
from app.schemas.part_colour import PartColourRead
|
|
from app.schemas.part_type import PartTypeRead
|
|
from app.schemas.scope_model import ScopeModelRead
|
|
from app.schemas.sub_part_type import SubPartTypeRead
|
|
|
|
|
|
class AugmentedPartNoteCreate(BaseModel):
|
|
body: str
|
|
|
|
@field_validator("body")
|
|
@classmethod
|
|
def validate_body(cls, v: str) -> str:
|
|
if not v.strip():
|
|
raise ValueError("body must not be blank")
|
|
return v.strip()
|
|
|
|
|
|
class AugmentedPartNoteRead(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
id: int
|
|
augmented_part_id: int
|
|
user_id: int | None
|
|
username: str
|
|
body: str
|
|
created_at: datetime
|
|
|
|
|
|
class AugmentedPartBase(BaseModel):
|
|
sku: str | None = None
|
|
description: str
|
|
colour_id: int
|
|
manufacturer_id: int
|
|
scope_model_id: int | None = None
|
|
part_type_id: int
|
|
sub_part_type_id: int | None = None
|
|
|
|
|
|
class AugmentedPartCreate(AugmentedPartBase):
|
|
pass
|
|
|
|
|
|
class AugmentedPartUpdate(BaseModel):
|
|
sku: str | None = None
|
|
description: str | None = None
|
|
colour_id: int | None = None
|
|
manufacturer_id: int | None = None
|
|
scope_model_id: int | None = None
|
|
part_type_id: int | None = None
|
|
sub_part_type_id: int | None = None
|
|
archived: bool | None = None
|
|
|
|
|
|
class AugmentedPartSyncResult(BaseModel):
|
|
created: int
|
|
updated: int
|
|
archived: int
|
|
skipped: int
|
|
|
|
|
|
class AugmentedPartRead(AugmentedPartBase):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
id: int
|
|
archived: bool
|
|
uac_diameter_range_mm: str | None
|
|
colour: PartColourRead
|
|
manufacturer: ManufacturerRead
|
|
scope_model: ScopeModelRead | None
|
|
part_type: PartTypeRead
|
|
sub_part_type: SubPartTypeRead | None
|
|
notes: list[AugmentedPartNoteRead] = []
|