From dd5eec5887bfaed5a178a718350aafd6fc066a95 Mon Sep 17 00:00:00 2001 From: tsygankoviva Date: Mon, 20 Jul 2026 14:37:04 +0300 Subject: [PATCH] =?UTF-8?q?form-4-handlers:=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB=20=D1=80=D1=83=D1=87=D0=BA=D1=83=20=D1=81?= =?UTF-8?q?=D0=BE=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=BE=D0=BC=20expense?= =?UTF-8?q?=20item=20=D0=B8=20=D1=84=D0=B8=D0=BB=D1=8C=D1=82=D1=80=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B5=D0=B9=20=D0=BF=D0=BE=20=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D1=8E=20r=5Fstart?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/src/api/v1/expense_item.py | 20 ++++++++++++++++++- api/src/repository/expense_item_repository.py | 8 ++++++++ api/src/services/expense_item_service.py | 12 ++++++++++- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/api/src/api/v1/expense_item.py b/api/src/api/v1/expense_item.py index 23f2a91..27ec439 100644 --- a/api/src/api/v1/expense_item.py +++ b/api/src/api/v1/expense_item.py @@ -4,9 +4,10 @@ from sqlalchemy.ext.asyncio import AsyncSession from src.services.expense_item_service import ExpenseItemService from src.db.models.app_user import AppUser -from src.api.v1.deps import require_admin +from src.api.v1.deps import require_admin, require_executor from src.db.session import get_db from src.domain.schemas import ( + BaseListResponse, BaseSingleResponse, ExpenseItemResponseSchema, ) @@ -33,3 +34,20 @@ async def get_expense_item_by_id( message="Запись Expense Item", result=ExpenseItemResponseSchema.model_validate(result), ) + + +@router.get("/", response_model=BaseListResponse[ExpenseItemResponseSchema]) +async def get_expense_item_by_id( + db: AsyncSession = Depends(get_db), + current_user: AppUser = Depends(require_executor), + r_start: bool | None = None, +): + """Получение записей expense item""" + service = ExpenseItemService(db) + result = await service.get_list(r_start=r_start) + + return BaseListResponse( + success=True, + message="Запись Expense Item", + result=[ExpenseItemResponseSchema.model_validate(el) for el in result], + ) diff --git a/api/src/repository/expense_item_repository.py b/api/src/repository/expense_item_repository.py index 99e9ed8..7b109e6 100644 --- a/api/src/repository/expense_item_repository.py +++ b/api/src/repository/expense_item_repository.py @@ -11,3 +11,11 @@ class ExpenseItemRepository: async def get(self, item_id: int) -> ExpenseItem | None: query = select(ExpenseItem).where(ExpenseItem.id == item_id).limit(1) return (await self.db.execute(query)).scalar_one_or_none() + + async def get_list(self, r_start: bool | None = None) -> list[ExpenseItem]: + where = [] + if r_start is not None: + where.append(ExpenseItem.item_id.startswith("R")) + + query = select(ExpenseItem).where(*where) + return (await self.db.execute(query)).scalars().all() diff --git a/api/src/services/expense_item_service.py b/api/src/services/expense_item_service.py index bda4eeb..e3982d8 100644 --- a/api/src/services/expense_item_service.py +++ b/api/src/services/expense_item_service.py @@ -10,7 +10,17 @@ class ExpenseItemService: def __init__(self, db: AsyncSession): self.repo = ExpenseItemRepository(db) - async def get(self, item_id: int, user: AppUser | None = None) -> ExpenseItem | None: + async def get( + self, + item_id: int, + user: AppUser | None = None, + ) -> ExpenseItem | None: if not user or user.role_id == UserRoleEnum.ADMIN: return await self.repo.get(item_id=item_id) return None + + async def get_list( + self, + r_start: bool | None = None, + ) -> list[ExpenseItem]: + return await self.repo.get_list(r_start=r_start)