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)