ws-user-id-fix: пишем для сессии бд пользователя

This commit is contained in:
tsygankoviva 2026-06-17 11:55:42 +03:00
parent d292b2fbb0
commit 7f7c9ab3eb

View File

@ -11,6 +11,7 @@ from sqlalchemy.exc import IntegrityError
from fastapi import APIRouter, WebSocket, WebSocketDisconnect, status from fastapi import APIRouter, WebSocket, WebSocketDisconnect, status
from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.ext.asyncio import AsyncSession
from src.repository.user_repository import UserRepository
from src.services.budget_line_service import BudgetLineService from src.services.budget_line_service import BudgetLineService
from src.api.v1.deps import get_user_by_token from src.api.v1.deps import get_user_by_token
from src.db.models.app_user import AppUser from src.db.models.app_user import AppUser
@ -25,10 +26,13 @@ from src.services.user_service import UserService
@asynccontextmanager @asynccontextmanager
async def get_db_session(): async def get_db_session(user_id: int | None = None):
"""Контекстный менеджер для получения сессии базы данных.""" """Контекстный менеджер для получения сессии базы данных."""
db = SessionLocal() db = SessionLocal()
try: try:
if user_id is not None:
user_repo = UserRepository(db)
await user_repo.set_app_user_id(user_id=user_id)
yield db yield db
finally: finally:
await db.close() await db.close()
@ -603,8 +607,6 @@ async def login(websocket: WebSocket, **kwargs) -> int:
return user.id return user.id
def resolve_cell_key(event_data: dict) -> dict | None: def resolve_cell_key(event_data: dict) -> dict | None:
data = event_data.get("data") data = event_data.get("data")
@ -738,7 +740,7 @@ async def process_websocket(
case _: case _:
pass pass
async with get_db_session() as db: async with get_db_session(user_id=user_id) as db:
processor = processor_cls(db) processor = processor_cls(db)
data["result"] = await processor.process( data["result"] = await processor.process(
event_data=data, event_data=data,