From e45faeb281b6502ac18d211d8ef4ac5cb0242d6f Mon Sep 17 00:00:00 2001 From: rhinemann Date: Sun, 22 Feb 2026 11:22:19 +0100 Subject: [PATCH 1/5] updated compose file --- agent/docker/docker-compose.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/agent/docker/docker-compose.yaml b/agent/docker/docker-compose.yaml index 3c8b1c4..3059c9e 100644 --- a/agent/docker/docker-compose.yaml +++ b/agent/docker/docker-compose.yaml @@ -1,4 +1,3 @@ -version: "3.9" name: "road_vision" services: mqtt: -- 2.49.1 From a63864bcaaea7a1e325de65f6b8f2093ab9142a9 Mon Sep 17 00:00:00 2001 From: rhinemann Date: Sun, 22 Feb 2026 12:17:03 +0100 Subject: [PATCH 2/5] updated compose file --- store/docker/docker-compose.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/store/docker/docker-compose.yaml b/store/docker/docker-compose.yaml index 8f9c32a..dff34e5 100644 --- a/store/docker/docker-compose.yaml +++ b/store/docker/docker-compose.yaml @@ -1,8 +1,7 @@ -version: "3.9" name: "road_vision__database" services: postgres_db: - image: postgres:latest + image: postgres:17 container_name: postgres_db restart: always environment: -- 2.49.1 From 1e7516fe7bb88b46a1c8feca1636c51a5e4805d3 Mon Sep 17 00:00:00 2001 From: rhinemann Date: Sun, 22 Feb 2026 12:19:33 +0100 Subject: [PATCH 3/5] update requirements --- store/requirements.txt | Bin 758 -> 450 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/store/requirements.txt b/store/requirements.txt index f920843a968a3ddc817af19433867a2ab1f2a0af..b70b2974d512b1220c5c1f801d0529d2d046a579 100644 GIT binary patch literal 450 zcmZ9Ju@1s83`B26;!_yl57PtO$Hz_-^@ zYps&s5owsE;yX^h)0Wth4hvXH<{fgT?e3muGfq<*ci6yE>j3u3YF*-UdCCXs*1c`e ZrMe!jm=sLe_BH;69_xhdiM7}<<6lW)PKf{j literal 758 zcmZva!A`?K3`BiK;!{9Ps0ti7^bQh;6Q`=AX&bd{q9#!C^S~Q#mQ)C>tVBCA_SoL< zucZY}ZJjNN(pGlCx3`A>*6uhHyR;cGv2#0v6+kN#!mhZ#CNjqg+k+IgbL__Ng-chU z*b@gbyb&q$6xPfcYi?Wj(U2wK8Ff`9cg_ZV$qD2t;U*9A82xSWlAWlPKOr58hN#`k zf8AB|9|m`-I`ygzzIyMVu?65$=o4?ZNIHjk`*jT2z&-IcaB7tG76nXL~|7XPyQ1N_Nx# zI#P{%@E1~9QtmD>? jOty1>>Oz|zcbBv6l<5fa3Rc72@!t(Ry$EsCx3={IFM(~< -- 2.49.1 From 69e679eccff3c30575ed358ab34dd3af98ba00b8 Mon Sep 17 00:00:00 2001 From: AndriiJushchenko Date: Tue, 24 Feb 2026 22:18:36 +0200 Subject: [PATCH 4/5] =?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( -- 2.49.1 From f3512e4afb26739c92cdc7bcbb3274c9ac688a55 Mon Sep 17 00:00:00 2001 From: AndriiJushchenko Date: Wed, 25 Feb 2026 19:05:25 +0200 Subject: [PATCH 5/5] =?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() -- 2.49.1