feat: Роли. Добавлены RolesService и RolesRouter
This commit is contained in:
parent
7cb2b21227
commit
b581ffd003
23
api/app/controllers/roles_router.py
Normal file
23
api/app/controllers/roles_router.py
Normal file
@ -0,0 +1,23 @@
|
||||
from fastapi import APIRouter, Depends
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.database.session import get_db
|
||||
from app.domain.entities.role import RoleEntity
|
||||
from app.infrastructure.dependencies import require_admin
|
||||
from app.infrastructure.roles_service import RolesService
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get(
|
||||
'/',
|
||||
response_model=list[RoleEntity],
|
||||
summary='Return all roles',
|
||||
description='Return all roles',
|
||||
)
|
||||
async def get_all_roles(
|
||||
db: AsyncSession = Depends(get_db),
|
||||
user=Depends(require_admin),
|
||||
):
|
||||
roles_service = RolesService(db)
|
||||
return await roles_service.get_all_roles()
|
||||
24
api/app/infrastructure/roles_service.py
Normal file
24
api/app/infrastructure/roles_service.py
Normal file
@ -0,0 +1,24 @@
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.application.roles_repository import RolesRepository
|
||||
from app.domain.entities.role import RoleEntity
|
||||
from app.domain.models import Role
|
||||
|
||||
|
||||
class RolesService:
|
||||
def __init__(self, db: AsyncSession):
|
||||
self.roles_repository = RolesRepository(db)
|
||||
|
||||
async def get_all_roles(self) -> list[RoleEntity]:
|
||||
roles = await self.roles_repository.get_all()
|
||||
return [
|
||||
self.model_to_entity(role)
|
||||
for role in roles
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
def model_to_entity(role: Role) -> RoleEntity:
|
||||
return RoleEntity(
|
||||
id=role.id,
|
||||
title=role.title,
|
||||
)
|
||||
@ -8,9 +8,9 @@ from app.application.roles_repository import RolesRepository
|
||||
from app.application.users_repository import UsersRepository
|
||||
from app.domain.entities.change_password import ChangePasswordEntity
|
||||
from app.domain.entities.register import RegisterEntity
|
||||
from app.domain.entities.role import RoleEntity
|
||||
from app.domain.entities.user import UserEntity
|
||||
from app.domain.models import User, Role
|
||||
from app.domain.models import User
|
||||
from app.infrastructure.roles_service import RolesService
|
||||
|
||||
|
||||
class UsersService:
|
||||
@ -27,7 +27,7 @@ class UsersService:
|
||||
)
|
||||
|
||||
user_entity = self.model_to_entity(user)
|
||||
user_entity.role = self.role_model_to_entity(user.role)
|
||||
user_entity.role = RolesService.model_to_entity(user.role)
|
||||
|
||||
return user_entity
|
||||
|
||||
@ -37,7 +37,7 @@ class UsersService:
|
||||
|
||||
for user in users:
|
||||
user_entity = self.model_to_entity(user)
|
||||
user_entity.role = self.role_model_to_entity(user.role)
|
||||
user_entity.role = RolesService.model_to_entity(user.role)
|
||||
response.append(user_entity)
|
||||
|
||||
return response
|
||||
@ -151,13 +151,6 @@ class UsersService:
|
||||
|
||||
return self.model_to_entity(user_model)
|
||||
|
||||
@staticmethod
|
||||
def role_model_to_entity(role: Role) -> RoleEntity:
|
||||
return RoleEntity(
|
||||
id=role.id,
|
||||
title=role.title,
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def is_strong_password(password: str) -> bool:
|
||||
if len(password) < 8:
|
||||
|
||||
@ -9,6 +9,7 @@ from app.controllers.lens_types_router import router as lens_types_router
|
||||
from app.controllers.lenses_router import router as lenses_router
|
||||
from app.controllers.patients_router import router as patients_router
|
||||
from app.controllers.register_routes import router as register_router
|
||||
from app.controllers.roles_router import router as roles_router
|
||||
from app.controllers.scheduled_appointments_router import router as scheduled_appointments_router
|
||||
from app.controllers.set_content_router import router as set_content_router
|
||||
from app.controllers.sets_router import router as sets_router
|
||||
@ -35,6 +36,7 @@ def start_app():
|
||||
api_app.include_router(lenses_router, prefix=f'{settings.APP_PREFIX}/lenses', tags=['lenses'])
|
||||
api_app.include_router(patients_router, prefix=f'{settings.APP_PREFIX}/patients', tags=['patients'])
|
||||
api_app.include_router(register_router, prefix=f'{settings.APP_PREFIX}/register', tags=['register'])
|
||||
api_app.include_router(roles_router, prefix=f'{settings.APP_PREFIX}/roles', tags=['roles'])
|
||||
api_app.include_router(scheduled_appointments_router, prefix=f'{settings.APP_PREFIX}/scheduled_appointments', tags=['scheduled_appointments'])
|
||||
api_app.include_router(set_content_router, prefix=f'{settings.APP_PREFIX}/set_content', tags=['set_content'])
|
||||
api_app.include_router(sets_router, prefix=f'{settings.APP_PREFIX}/sets', tags=['sets'])
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user