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.
40 lines
1.1 KiB
40 lines
1.1 KiB
from fastapi import APIRouter, Depends
|
|
from pydantic import BaseModel
|
|
|
|
from conf import setting
|
|
from helper import respond_to
|
|
from models import Hikvision
|
|
|
|
router = APIRouter(prefix='/hikvisions')
|
|
|
|
|
|
class HikvisionCreateModel(BaseModel):
|
|
cabinet_id: str
|
|
name: str
|
|
ip: str
|
|
channel: str
|
|
|
|
|
|
@router.get('', summary='视频监控配置列表')
|
|
async def index():
|
|
hikvisions = await Hikvision.filter(terminal_id=setting.TERMINAL_ID).values('id', 'name', 'ip', 'channel')
|
|
return respond_to(data=hikvisions)
|
|
|
|
|
|
@router.get('/{cabinet_id}', summary='单查视频监控配置')
|
|
async def index(cabinet_id: str):
|
|
hikvision = await Hikvision.get_or_none(terminal_id=setting.TERMINAL_ID, cabinet_id=cabinet_id).values('id', 'name', 'ip', 'channel')
|
|
return respond_to(data=hikvision)
|
|
|
|
|
|
@router.post('', summary='创建视频监控配置')
|
|
async def create(model: HikvisionCreateModel):
|
|
await Hikvision.create(**(model.dict() | {'terminal_id': setting.TERMINAL_ID}))
|
|
return respond_to()
|
|
|
|
|
|
@router.delete('/{id}', summary='删除视频监控配置')
|
|
async def destroy(id: str):
|
|
await Hikvision.filter(id=id).delete()
|
|
return respond_to()
|