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.

49 lines
1.5 KiB

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)