15
15
from sqlalchemy .orm import Session
16
16
17
17
from app .database import get_db
18
- from app . redis import redis
18
+ from redis . asyncio import Redis
19
19
from app .models .frame import Frame , new_frame , delete_frame , update_frame
20
20
from app .models .log import new_log as log
21
21
from app .models .metrics import Metrics
28
28
)
29
29
from app .api .auth import ALGORITHM , SECRET_KEY , get_current_user
30
30
from app .utils .network import is_safe_host
31
+ from app .redis import get_redis
31
32
from . import private_api , public_api
32
33
33
34
@@ -40,15 +41,15 @@ async def api_frames_list(db: Session = Depends(get_db)):
40
41
41
42
@private_api .get ("/frames/{id}" , response_model = FrameResponse )
42
43
async def api_frame_get (id : int , db : Session = Depends (get_db )):
43
- frame = db .query ( Frame ). get (id )
44
+ frame = db .get (Frame , id )
44
45
if frame is None :
45
46
raise HTTPException (status_code = HTTPStatus .NOT_FOUND , detail = "Frame not found" )
46
47
return {"frame" : frame .to_dict ()}
47
48
48
49
49
50
@private_api .get ("/frames/{id}/logs" , response_model = FrameLogsResponse )
50
51
async def api_frame_get_logs (id : int , db : Session = Depends (get_db )):
51
- frame = db .query ( Frame ). get (id )
52
+ frame = db .get (Frame , id )
52
53
if frame is None :
53
54
raise HTTPException (status_code = HTTPStatus .NOT_FOUND , detail = "Frame not found" )
54
55
logs = [ll .to_dict () for ll in frame .logs ][- 1000 :]
@@ -71,15 +72,15 @@ async def get_image_link(id: int, user=Depends(get_current_user)):
71
72
}
72
73
73
74
@public_api .get ("/frames/{id}/image" )
74
- async def api_frame_get_image (id : int , token : str , request : Request , db : Session = Depends (get_db )):
75
+ async def api_frame_get_image (id : int , token : str , request : Request , db : Session = Depends (get_db ), redis : Redis = Depends ( get_redis ) ):
75
76
try :
76
77
payload = jwt .decode (token , SECRET_KEY , algorithms = [ALGORITHM ])
77
78
if payload .get ("sub" ) != str (id ):
78
79
raise HTTPException (status_code = 401 , detail = "Unauthorized" )
79
80
except JWTError :
80
81
raise HTTPException (status_code = 401 , detail = "Unauthorized" )
81
82
82
- frame = db .query ( Frame ). get (id )
83
+ frame = db .get (Frame , id )
83
84
if frame is None :
84
85
raise HTTPException (status_code = HTTPStatus .NOT_FOUND , detail = "Frame not found" )
85
86
@@ -110,8 +111,8 @@ async def api_frame_get_image(id: int, token: str, request: Request, db: Session
110
111
111
112
112
113
@private_api .get ("/frames/{id}/state" , response_model = FrameStateResponse )
113
- async def api_frame_get_state (id : int , db : Session = Depends (get_db )):
114
- frame = db .query ( Frame ). get (id )
114
+ async def api_frame_get_state (id : int , db : Session = Depends (get_db ), redis : Redis = Depends ( get_redis ) ):
115
+ frame = db .get (Frame , id )
115
116
if frame is None :
116
117
raise HTTPException (status_code = HTTPStatus .NOT_FOUND , detail = "Frame not found" )
117
118
@@ -147,7 +148,7 @@ async def api_frame_get_state(id: int, db: Session = Depends(get_db)):
147
148
148
149
@private_api .post ("/frames/{id}/event/{event}" )
149
150
async def api_frame_event (id : int , event : str , request : Request , db : Session = Depends (get_db )):
150
- frame = db .query ( Frame ). get (id )
151
+ frame = db .get (Frame , id )
151
152
if frame is None :
152
153
raise HTTPException (status_code = HTTPStatus .NOT_FOUND , detail = "Frame not found" )
153
154
@@ -179,7 +180,7 @@ async def api_frame_event(id: int, event: str, request: Request, db: Session = D
179
180
180
181
@private_api .get ("/frames/{id}/scene_source/{scene}" )
181
182
async def api_frame_scene_source (id : int , scene : str , db : Session = Depends (get_db )):
182
- frame = db .query ( Frame ). get (id )
183
+ frame = db .get (Frame , id )
183
184
if frame is None :
184
185
raise HTTPException (status_code = HTTPStatus .NOT_FOUND , detail = "Frame not found" )
185
186
@@ -191,7 +192,7 @@ async def api_frame_scene_source(id: int, scene: str, db: Session = Depends(get_
191
192
192
193
@private_api .get ("/frames/{id}/assets" , response_model = FrameAssetsResponse )
193
194
async def api_frame_get_assets (id : int , db : Session = Depends (get_db )):
194
- frame = db .query ( Frame ). get (id )
195
+ frame = db .get (Frame , id )
195
196
if frame is None :
196
197
raise HTTPException (status_code = HTTPStatus .NOT_FOUND , detail = "Frame not found" )
197
198
@@ -217,8 +218,8 @@ async def api_frame_get_assets(id: int, db: Session = Depends(get_db)):
217
218
218
219
219
220
@private_api .get ("/frames/{id}/asset" )
220
- async def api_frame_get_asset (id : int , request : Request , db : Session = Depends (get_db )):
221
- frame = db .query ( Frame ). get (id )
221
+ async def api_frame_get_asset (id : int , request : Request , db : Session = Depends (get_db ), redis : Redis = Depends ( get_redis ) ):
222
+ frame = db .get (Frame , id )
222
223
if frame is None :
223
224
raise HTTPException (status_code = HTTPStatus .NOT_FOUND , detail = "Frame not found" )
224
225
@@ -325,7 +326,7 @@ async def api_frame_update_endpoint(
325
326
data : FrameUpdateRequest ,
326
327
db : Session = Depends (get_db )
327
328
):
328
- frame = db .query ( Frame ). get (id )
329
+ frame = db .get (Frame , id )
329
330
if not frame :
330
331
raise HTTPException (status_code = HTTPStatus .NOT_FOUND , detail = "Frame not found" )
331
332
@@ -349,18 +350,18 @@ async def api_frame_update_endpoint(
349
350
350
351
351
352
@private_api .post ("/frames/new" , response_model = FrameResponse )
352
- async def api_frame_new (data : FrameCreateRequest , db : Session = Depends (get_db )):
353
+ async def api_frame_new (data : FrameCreateRequest , db : Session = Depends (get_db ), redis : Redis = Depends ( get_redis ) ):
353
354
try :
354
- frame = await new_frame (db , data .name , data .frame_host , data .server_host , data .device , data .interval )
355
+ frame = await new_frame (db , redis , data .name , data .frame_host , data .server_host , data .device , data .interval )
355
356
return {"frame" : frame .to_dict ()}
356
357
except Exception as e :
357
358
raise HTTPException (status_code = HTTPStatus .INTERNAL_SERVER_ERROR , detail = str (e ))
358
359
359
360
360
361
@private_api .delete ("/frames/{frame_id}" )
361
- async def api_frame_delete (frame_id : int , db : Session = Depends (get_db )):
362
+ async def api_frame_delete (frame_id : int , db : Session = Depends (get_db ), redis : Redis = Depends ( get_redis ) ):
362
363
try :
363
- success = await delete_frame (db , frame_id )
364
+ success = await delete_frame (db , redis , frame_id )
364
365
if success :
365
366
return {"message" : "Frame deleted successfully" }
366
367
else :
@@ -371,7 +372,7 @@ async def api_frame_delete(frame_id: int, db: Session = Depends(get_db)):
371
372
372
373
@private_api .get ("/frames/{id}/metrics" , response_model = FrameMetricsResponse )
373
374
async def api_frame_metrics (id : int , db : Session = Depends (get_db )):
374
- frame = db .query ( Frame ). get (id )
375
+ frame = db .get (Frame , id )
375
376
if frame is None :
376
377
raise HTTPException (status_code = HTTPStatus .NOT_FOUND , detail = "Frame not found" )
377
378
try :
0 commit comments