11from typing import Annotated
22
3- from fastapi import APIRouter , Depends , status
3+ from fastapi import APIRouter , BackgroundTasks , Depends , status
44from sqlalchemy .ext .asyncio .session import AsyncSession
55from sqlalchemy .sql import func
66from sqlmodel import NUMERIC , cast , or_ , select
2222from api .utils .permissions import get_user_read_permissions , get_user_write_permissions
2323from api .utils .security import get_current_superuser , get_current_user
2424from api .utils .sensor_utils import get_is_valid_sensor_type , get_sensor_from_db
25+ from api .utils .websocket_connection_handler import WebsocketHandler , get_websocket_handler
2526
2627sensors_router = APIRouter (tags = ["Sensors" ], prefix = "/sensor" )
2728
@@ -117,6 +118,8 @@ async def create_sensor(
117118@sensors_router .post ("/{sensor_id}/data" , response_model = SensorData , status_code = status .HTTP_201_CREATED )
118119async def create_sensor_data (
119120 session : Annotated [AsyncSession , Depends (get_session )],
121+ ws_handler : Annotated [WebsocketHandler , Depends (get_websocket_handler )],
122+ background_tasks : BackgroundTasks ,
120123 current_user : Annotated [DBUser , Depends (get_current_user )],
121124 sensor_id : int ,
122125 data : SensorDataCreate ,
@@ -140,6 +143,9 @@ async def create_sensor_data(
140143 session .add (data )
141144 await session .commit ()
142145 await session .refresh (data )
146+
147+ background_tasks .add_task (ws_handler .add_event , data )
148+
143149 return data
144150
145151
@@ -210,6 +216,8 @@ async def get_sensor_data_daily(
210216@sensors_router .post ("/{sensor_id}/state" , response_model = SensorState , status_code = status .HTTP_201_CREATED )
211217async def create_sensor_state (
212218 session : Annotated [AsyncSession , Depends (get_session )],
219+ ws_handler : Annotated [WebsocketHandler , Depends (get_websocket_handler )],
220+ background_tasks : BackgroundTasks ,
213221 current_user : Annotated [DBUser , Depends (get_current_user )],
214222 sensor_id : int ,
215223 data : SensorStateCreate ,
@@ -233,6 +241,9 @@ async def create_sensor_state(
233241 session .add (data )
234242 await session .commit ()
235243 await session .refresh (data )
244+
245+ background_tasks .add_task (ws_handler .add_event , data )
246+
236247 return data
237248
238249
0 commit comments