41 lines
1,023 B
Python
41 lines
1,023 B
Python
from datetime import datetime
|
|
from typing import Any, Optional
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class RackCreate(BaseModel):
|
|
name: str
|
|
rack_type: Optional[str] = None
|
|
description: Optional[str] = None
|
|
location: Optional[str] = None
|
|
zone_id: Optional[int] = None
|
|
|
|
|
|
class RackUpdate(BaseModel):
|
|
name: Optional[str] = None
|
|
rack_type: Optional[str] = None
|
|
description: Optional[str] = None
|
|
location: Optional[str] = None
|
|
zone_id: Optional[int] = None
|
|
|
|
|
|
class RackRead(BaseModel):
|
|
id: int
|
|
object_id: int
|
|
name: str
|
|
rack_type: Optional[str] = None
|
|
description: Optional[str] = None
|
|
location: Optional[str] = None
|
|
zone_id: Optional[int] = None
|
|
zone_name: Optional[str] = None
|
|
created_at: datetime
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
@classmethod
|
|
def from_orm_with_zone(cls, rack: Any) -> "RackRead":
|
|
obj = cls.model_validate(rack)
|
|
if rack.zone is not None:
|
|
obj.zone_name = rack.zone.name
|
|
return obj
|