location.py 1.1 KB

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