From 69e679eccff3c30575ed358ab34dd3af98ba00b8 Mon Sep 17 00:00:00 2001 From: AndriiJushchenko Date: Tue, 24 Feb 2026 22:18:36 +0200 Subject: [PATCH 1/2] =?UTF-8?q?SCRUM-[49,=2054]=20=D0=A0=D0=B5=D0=B0=D0=BB?= =?UTF-8?q?=D1=96=D0=B7=D1=83=D0=B2=D0=B0=D1=82=D0=B8=20POST=20=D1=82?= =?UTF-8?q?=D0=B0=20=D0=B2=D1=96=D0=B4=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D1=83?= =?UTF-8?q?=20=D0=BF=D0=BE=20websoket=20=D0=BF=D1=96=D0=B4=20=D1=87=D0=B0?= =?UTF-8?q?=D1=81=20=D0=B2=D0=B8=D0=BA=D0=BE=D0=BD=D0=B0=D0=BD=D0=BD=D1=8F?= =?UTF-8?q?=20POST?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- store/main.py | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/store/main.py b/store/main.py index 272a646..3edd1af 100644 --- a/store/main.py +++ b/store/main.py @@ -2,6 +2,7 @@ import asyncio import json from typing import Set, Dict, List, Any from fastapi import FastAPI, HTTPException, WebSocket, WebSocketDisconnect, Body +from fastapi.encoders import jsonable_encoder from sqlalchemy import ( create_engine, MetaData, @@ -126,9 +127,34 @@ async def send_data_to_subscribers(user_id: int, data): @app.post("/processed_agent_data/") async def create_processed_agent_data(data: List[ProcessedAgentData]): - # Insert data to database - # Send data to subscribers - pass + session = SessionLocal() + try: + created_data = [ + { + "road_state": item.road_state, + "x": item.agent_data.accelerometer.x, + "y": item.agent_data.accelerometer.y, + "z": item.agent_data.accelerometer.z, + "latitude": item.agent_data.gps.latitude, + "longitude": item.agent_data.gps.longitude, + "timestamp": item.agent_data.timestamp, + } + for item in data + ] + stmt = processed_agent_data.insert().values(created_data).returning(processed_agent_data) + result = session.execute(stmt) + created_records = [dict(row._mapping) for row in result.fetchall()] + session.commit() + + for record in created_records: + await send_data_to_subscribers(jsonable_encoder(record)) + return created_records + except Exception as err: + session.rollback() + print(f"Database error: {err}") + raise HTTPException(status_code=500, detail="Internal Server Error") + finally: + session.close() @app.get( From f3512e4afb26739c92cdc7bcbb3274c9ac688a55 Mon Sep 17 00:00:00 2001 From: AndriiJushchenko Date: Wed, 25 Feb 2026 19:05:25 +0200 Subject: [PATCH 2/2] =?UTF-8?q?=D0=A2=D1=80=D0=BE=D1=85=D0=B8=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=84=D1=96=D0=BA=D1=81=D0=B8=D0=B2=20=D1=84=D1=83=D0=BD?= =?UTF-8?q?=D0=BA=D1=86=D1=96=D1=8E=20post=20=D1=96=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D1=96=D0=B2=20=D1=82=D0=B5=D1=81=D1=82=D0=B8=20post=20?= =?UTF-8?q?=D1=96=20websoket.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- store/main.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/store/main.py b/store/main.py index 3edd1af..81d51a1 100644 --- a/store/main.py +++ b/store/main.py @@ -126,12 +126,13 @@ async def send_data_to_subscribers(user_id: int, data): @app.post("/processed_agent_data/") -async def create_processed_agent_data(data: List[ProcessedAgentData]): +async def create_processed_agent_data(data: List[ProcessedAgentData], user_id: int = Body(..., embed=True)): session = SessionLocal() try: created_data = [ { "road_state": item.road_state, + "user_id": user_id, "x": item.agent_data.accelerometer.x, "y": item.agent_data.accelerometer.y, "z": item.agent_data.accelerometer.z, @@ -147,7 +148,7 @@ async def create_processed_agent_data(data: List[ProcessedAgentData]): session.commit() for record in created_records: - await send_data_to_subscribers(jsonable_encoder(record)) + await send_data_to_subscribers(user_id, jsonable_encoder(record)) return created_records except Exception as err: session.rollback()