Files
video/schema/device_schema.py

55 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from datetime import datetime
from typing import Optional, List, Dict
from pydantic import BaseModel, Field
# ------------------------------
# 请求模型
# ------------------------------
class DeviceCreateRequest(BaseModel):
"""设备创建请求模型"""
ip: Optional[str] = Field(..., max_length=100, description="设备IP地址")
hostname: Optional[str] = Field(None, max_length=100, description="设备别名")
params: Optional[Dict] = Field(None, description="设备扩展参数JSON格式")
# ------------------------------
# 响应模型
# ------------------------------
class DeviceResponse(BaseModel):
"""单设备信息响应模型(与数据库表字段对齐)"""
id: int = Field(..., description="设备主键ID")
client_ip: Optional[str] = Field(None, max_length=100, description="设备IP地址")
hostname: Optional[str] = Field(None, max_length=100, description="设备别名")
device_online_status: int = Field(..., description="在线状态1-在线、0-离线)")
device_type: Optional[str] = Field(None, description="设备类型")
alarm_count: int = Field(..., description="报警次数")
params: Optional[str] = Field(None, description="扩展参数JSON字符串")
created_at: datetime = Field(..., description="记录创建时间")
updated_at: datetime = Field(..., description="记录更新时间")
model_config = {"from_attributes": True} # 支持从数据库结果直接转换
class DeviceListResponse(BaseModel):
"""设备列表响应模型"""
total: int = Field(..., description="设备总数")
devices: List[DeviceResponse] = Field(..., description="设备列表")
class DeviceStatusHistoryResponse(BaseModel):
"""设备上下线记录响应模型"""
id: int = Field(..., description="记录ID")
device_id: int = Field(..., description="关联设备ID")
client_ip: Optional[str] = Field(None, description="设备IP地址")
status: int = Field(..., description="状态1-在线、0-离线)")
status_time: datetime = Field(..., description="状态变更时间")
model_config = {"from_attributes": True}
class DeviceStatusHistoryListResponse(BaseModel):
"""设备上下线记录列表响应模型"""
total: int = Field(..., description="记录总数")
history: List[DeviceStatusHistoryResponse] = Field(..., description="上下线记录列表")