from fastapi import APIRouter, Depends from pydantic import BaseModel from conf import setting from helper import login_required, respond_to from models import Hikvision from models.cabinet import Cabinet router = APIRouter(prefix='/hikvisions', dependencies=[Depends(login_required)]) class HikvisionCreateModel(BaseModel): cabinet_id: str name: str ip: str channel: str @router.get('', summary='视频监控配置列表') async def index(): hikvisions = await Hikvision.values('id', 'name', 'ip', 'channel') return respond_to(data=hikvisions) @router.get('/{cabinet_id}', summary='单查视频监控配置') async def index(cabinet_id: str): hikvision = await Hikvision.filter(cabinet_id=cabinet_id).first().values('id', 'name', 'ip', 'channel') return respond_to(data=hikvision) @router.post('', summary='创建视频监控配置') async def create(model: HikvisionCreateModel): cabinet_obj = await Cabinet.get(id=model.cabinet_id) dic = model.dict() dic.setdefault("terminal_id", cabinet_obj.terminal_id) await Hikvision.create(**dic) return respond_to() @router.delete('/{id}', summary='删除视频监控配置') async def destroy(id: str): await Hikvision.filter(id=id).delete() return respond_to() @router.get('/cabinets', summary='柜子下拉列表') async def cabinets(): cabinet_obj = await Cabinet.filter(~Cabinet.terminal_id.isnull()).values('id', 'label') return respond_to(data=cabinet_obj)