Merge pull request 'id новой строки в ответе при вставке в вебсокетах' (#20) from new_line_id into test

Reviewed-on: #20
Reviewed-by: Raykov-MS <RaykovMS@avt.rshb.ru>
This commit is contained in:
tsygankoviva 2026-05-29 11:15:49 +03:00
commit 023f2974df
3 changed files with 31 additions and 2 deletions

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.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
from src.db.models.form_type import FormTypeEnum from src.db.models.form_type import FormTypeEnum
@ -186,6 +187,7 @@ class FormEventProcess:
def __init__(self, db: AsyncSession): def __init__(self, db: AsyncSession):
self.sheet_service: SheetService = SheetService(db) self.sheet_service: SheetService = SheetService(db)
self.bf_service: BudgetFormService = BudgetFormService(db) self.bf_service: BudgetFormService = BudgetFormService(db)
self.bl_service: BudgetLineService = BudgetLineService(db)
self.user_service: UserService = UserService(db) self.user_service: UserService = UserService(db)
@ -283,7 +285,8 @@ class FormEventProcess:
if not form: if not form:
return None return None
return await self.sheet_service.add_line( ids = await self.bl_service.get_ids(budget_form_id=form_id)
result = await self.sheet_service.add_line(
form_id=form_id, form_id=form_id,
sheet=sheet, sheet=sheet,
expense_item_id=event_data.get("expense_item_id"), expense_item_id=event_data.get("expense_item_id"),
@ -299,6 +302,16 @@ class FormEventProcess:
contract_end_date=event_data.get("contract_end_date"), contract_end_date=event_data.get("contract_end_date"),
user=user, user=user,
) )
final_result = {
"data": result,
"new_line_id": None,
}
for el in result:
if el[3]["line_id"] and el[3]["line_id"] not in ids:
final_result["new_line_id"] = el[3]["line_id"]
return final_result
return final_result
async def __del_row( async def __del_row(
self, self,

View File

@ -14,4 +14,13 @@ class BudgetLineRepository:
async def get_list(self, budget_line_ids: list[int]) -> BudgetLine | None: async def get_list(self, budget_line_ids: list[int]) -> BudgetLine | None:
query = select(BudgetLine).where(BudgetLine.id.in_(budget_line_ids)) query = select(BudgetLine).where(BudgetLine.id.in_(budget_line_ids))
return (await self.db.execute(query)).scalars().all() return (await self.db.execute(query)).scalars().all()
async def get_ids(
self,
budget_form_id: int,
) -> list[int]:
query = select(BudgetLine.id).where(BudgetLine.budget_form_id == budget_form_id)
return (await self.db.execute(query)).scalars().all()

View File

@ -26,3 +26,10 @@ class BudgetLineService:
budget_line_ids: list[int], budget_line_ids: list[int],
) -> list[BudgetLine]: ) -> list[BudgetLine]:
return await self.bl_repo.get_list(budget_line_ids=budget_line_ids) return await self.bl_repo.get_list(budget_line_ids=budget_line_ids)
async def get_ids(
self,
budget_form_id: int,
) -> list[int]:
return await self.bl_repo.get_ids(budget_form_id=budget_form_id)