An error occurred while loading the file. Please try again.
-
Adam Reese authoredUnverified4f26b658
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
from typing import List
from fastapi import APIRouter, HTTPException, status, Depends
from database import db_connection as db
from database.repositories.cam_groups import GroupRepository
from database.repositories.cams import CamRepository
from database.schemas.cam_groups import GroupFull
from database.schemas.cams import CamOut, CamCreate, CamUpdate
db_cams_router = APIRouter()
@db_cams_router.get("/list", response_model=List[CamOut])
async def list_cams(
cam_repo: CamRepository = Depends(db.get_repository(CamRepository))
):
cams = await cam_repo.list_all()
if cams is None:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND
)
return cams
@db_cams_router.get("/{cam_id}", response_model=CamOut)
async def get_cam(
cam_id: int,
cam_repo: CamRepository = Depends(db.get_repository(CamRepository))
):
cam = await cam_repo.get(cam_id)
if cam is None:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND
)
return cam
@db_cams_router.post("", response_model=CamOut)
async def create_cam(
cam: CamCreate,
cam_repo: CamRepository = Depends(db.get_repository(CamRepository))
):
new_cam = await cam_repo.create(cam)
if new_cam is None:
raise HTTPException(
status_code=status.HTTP_304_NOT_MODIFIED
)
return new_cam
@db_cams_router.patch("/{cam_id}", response_model=CamOut)
async def update_cam(
cam_id: int,
cam: CamUpdate,
cam_repo: CamRepository = Depends(db.get_repository(CamRepository))
):
updated_cam = await cam_repo.update(cam_id, cam)
if updated_cam is None:
raise HTTPException(
status_code=status.HTTP_304_NOT_MODIFIED
)
return updated_cam
@db_cams_router.delete("/{cam_id}", response_model=CamOut)
async def delete_cam(
cam_id: int,
cam_repo: CamRepository = Depends(db.get_repository(CamRepository))
):
cam = await cam_repo.delete(cam_id)
if cam is None:
raise HTTPException(
status_code=status.HTTP_304_NOT_MODIFIED
)
return cam
@db_cams_router.get("/{cam_id}/groups", response_model=List[GroupFull], tags=["Cam groups"])
async def list_cam_groups(
cam_id: int,
cam_repo: CamRepository = Depends(db.get_repository(CamRepository))
):
cam = await cam_repo.get(cam_id)
groups = await cam_repo.get_cam_groups(cam)
if groups is None:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND
)
return groups
@db_cams_router.post("/{cam_id}/groups", response_model=GroupFull, tags=["Cam groups"])
async def add_cam_group(
cam_id: int,
group_id: int,
cam_repo: CamRepository = Depends(db.get_repository(CamRepository)),
group_repo: GroupRepository = Depends(db.get_repository(GroupRepository))
):
cam = await cam_repo.get(cam_id)
group = await group_repo.get(group_id)
await cam_repo.add_cam_group(cam, group)
return group
@db_cams_router.delete("/{cam_id}/groups", response_model=GroupFull, tags=["Cam groups"])
async def delete_cam_group(
cam_id: int,
group_id: int,
cam_repo: CamRepository = Depends(db.get_repository(CamRepository)),
group_repo: GroupRepository = Depends(db.get_repository(GroupRepository))
):
cam = await cam_repo.get(cam_id)
group = await group_repo.get(group_id)
await cam_repo.delete_cam_group(cam, group)
return group