location.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from datetime import datetime
  2. from pydantic import BaseModel, Field, field_validator
  3. from backend.app.services.location_service import normalize_location_name
  4. class LocationCreate(BaseModel):
  5. name: str = Field(..., min_length=1, max_length=255)
  6. identifier: str | None = Field(default=None, max_length=100)
  7. @field_validator("name")
  8. @classmethod
  9. def validate_name(cls, v: str) -> str:
  10. return normalize_location_name(v)
  11. class LocationUpdate(BaseModel):
  12. name: str | None = Field(default=None, min_length=1, max_length=255)
  13. identifier: str | None = Field(default=None, max_length=100)
  14. @field_validator("name")
  15. @classmethod
  16. def validate_name(cls, v: str | None) -> str | None:
  17. if v is None:
  18. return None
  19. return normalize_location_name(v)
  20. class LocationResponse(BaseModel):
  21. id: int
  22. name: str
  23. identifier: str | None = None
  24. spool_count: int = 0
  25. created_at: datetime
  26. updated_at: datetime
  27. class Config:
  28. from_attributes = True