You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.8 KiB
46 lines
1.8 KiB
from pydantic import BaseModel, Field
|
|
from typing import Dict, Any, Optional
|
|
from datetime import datetime
|
|
from app.core.config import ProtocolType, DeviceStatus
|
|
|
|
class DeviceBase(BaseModel):
|
|
"""设备基础模型"""
|
|
name: str = Field(..., description="设备名称")
|
|
protocol_type: str = Field(..., description="协议类型")
|
|
connection_info: Dict[str, Any] = Field(..., description="连接信息")
|
|
|
|
class DeviceCreate(DeviceBase):
|
|
"""创建设备请求模型"""
|
|
device_id: str = Field(..., description="设备唯一标识")
|
|
|
|
class DeviceUpdate(BaseModel):
|
|
"""更新设备请求模型"""
|
|
name: Optional[str] = Field(None, description="设备名称")
|
|
connection_info: Optional[Dict[str, Any]] = Field(None, description="连接信息")
|
|
|
|
class Device(DeviceBase):
|
|
"""设备完整模型"""
|
|
device_id: str = Field(..., description="设备唯一标识")
|
|
status: str = Field(default=DeviceStatus.OFFLINE, description="设备状态")
|
|
created_at: datetime = Field(..., description="创建时间")
|
|
updated_at: datetime = Field(..., description="更新时间")
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class DeviceList(BaseModel):
|
|
"""设备列表响应模型"""
|
|
devices: list[Device] = Field(..., description="设备列表")
|
|
total: int = Field(..., description="设备总数")
|
|
|
|
class DeviceResponse(BaseModel):
|
|
"""设备响应模型"""
|
|
success: bool = Field(..., description="操作是否成功")
|
|
message: str = Field(..., description="响应消息")
|
|
data: Optional[Device] = Field(None, description="设备数据")
|
|
|
|
class DeviceStatusResponse(BaseModel):
|
|
"""设备状态响应模型"""
|
|
device_id: str = Field(..., description="设备ID")
|
|
status: str = Field(..., description="设备状态")
|
|
timestamp: datetime = Field(..., description="状态更新时间")
|