41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
from typing import List, Optional
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.core.entities.role import RoleEntity
|
|
from app.infrastructure.database.models.roles import Role
|
|
from app.infrastructure.database.repository.role_repository import RoleRepository
|
|
|
|
|
|
class RoleService:
|
|
def __init__(self, db: Session):
|
|
self.repository = RoleRepository(db)
|
|
|
|
def get_all_roles(self) -> List[RoleEntity]:
|
|
roles = self.repository.get_all()
|
|
return [RoleEntity(r.id, r.name) for r in roles]
|
|
|
|
def get_role_by_id(self, role_id: int) -> Optional[RoleEntity]:
|
|
role = self.repository.get_by_id(role_id)
|
|
if role:
|
|
return RoleEntity(role.id, role.name)
|
|
|
|
return None
|
|
|
|
def create_role(self, entity: RoleEntity) -> RoleEntity:
|
|
role_model = Role(name=entity.name)
|
|
created_role = self.repository.create(role_model)
|
|
return RoleEntity(created_role.id, created_role.name)
|
|
|
|
def update_role(self, role_id: int, entity: RoleEntity) -> Optional[RoleEntity]:
|
|
role_model = self.repository.get_by_id(role_id)
|
|
if role_model:
|
|
role_model.name = entity.name
|
|
self.repository.update(role_model)
|
|
return RoleEntity(role_model.id, role_model.name)
|
|
|
|
return None
|
|
|
|
def delete_role(self, role_id: int) -> bool:
|
|
return self.repository.delete(role_id) is not None
|