feat: Добавлено получение всех пользователей

This commit is contained in:
Андрей Дувакин 2025-06-02 21:48:38 +05:00
parent b8b57e451b
commit 7cb2b21227
3 changed files with 30 additions and 2 deletions

View File

@ -12,7 +12,10 @@ class UsersRepository:
self.db = db self.db = db
async def get_all(self) -> Sequence[User]: async def get_all(self) -> Sequence[User]:
stmt = select(User) stmt = (
select(User)
.options(joinedload(User.role))
)
result = await self.db.execute(stmt) result = await self.db.execute(stmt)
return result.scalars().all() return result.scalars().all()

View File

@ -6,12 +6,26 @@ from sqlalchemy.ext.asyncio import AsyncSession
from app.database.session import get_db from app.database.session import get_db
from app.domain.entities.change_password import ChangePasswordEntity from app.domain.entities.change_password import ChangePasswordEntity
from app.domain.entities.user import UserEntity from app.domain.entities.user import UserEntity
from app.infrastructure.dependencies import get_current_user from app.infrastructure.dependencies import get_current_user, require_admin
from app.infrastructure.users_service import UsersService from app.infrastructure.users_service import UsersService
router = APIRouter() router = APIRouter()
@router.get(
'/',
response_model=list[UserEntity],
summary='Return all users',
description='Returns a list of all users',
)
async def get_authenticated_user_data(
db: AsyncSession = Depends(get_db),
user=Depends(require_admin),
):
users_service = UsersService(db)
return await users_service.get_all_users()
@router.get( @router.get(
'/my-data/', '/my-data/',
response_model=Optional[UserEntity], response_model=Optional[UserEntity],

View File

@ -31,6 +31,17 @@ class UsersService:
return user_entity return user_entity
async def get_all_users(self) -> list[UserEntity]:
users = await self.users_repository.get_all()
response = []
for user in users:
user_entity = self.model_to_entity(user)
user_entity.role = self.role_model_to_entity(user.role)
response.append(user_entity)
return response
async def change_password(self, data: ChangePasswordEntity, current_user_id: int) -> Optional[UserEntity]: async def change_password(self, data: ChangePasswordEntity, current_user_id: int) -> Optional[UserEntity]:
user = await self.users_repository.get_by_id(data.user_id) user = await self.users_repository.get_by_id(data.user_id)
if not user: if not user: