import uuid from datetime import datetime from pydantic import BaseModel, Field, field_validator class KioskDeviceCreate(BaseModel): name: str = Field(..., min_length=1, max_length=255) location: str | None = Field(None, max_length=255) @field_validator("name") @classmethod def name_not_blank(cls, v: str) -> str: if not v.strip(): raise ValueError("Name darf nicht nur aus Leerzeichen bestehen.") return v.strip() class KioskDeviceUpdate(BaseModel): name: str | None = Field(None, min_length=1, max_length=255) location: str | None = Field(None, max_length=255) @field_validator("name") @classmethod def name_not_blank(cls, v: str | None) -> str | None: if v is not None: if not v.strip(): raise ValueError("Name darf nicht nur aus Leerzeichen bestehen.") return v.strip() return v is_active: bool | None = None class KioskDeviceOut(BaseModel): model_config = {"from_attributes": True} id: uuid.UUID company_id: uuid.UUID name: str location: str | None is_active: bool last_seen_at: datetime | None created_at: datetime class KioskDeviceCreated(KioskDeviceOut): """Wird nur einmalig bei Erstellung zurückgegeben – enthält den Klartext-Token.""" token: str