57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
from typing import Optional
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.application.roles_repository import RolesRepository
|
|
from app.domain.entities.roles_entity import RoleEntity
|
|
from app.domain.models.roles import Role
|
|
|
|
|
|
class RolesService:
|
|
def __init__(self, db: Session):
|
|
self.roles_repository = RolesRepository(db)
|
|
|
|
def get_all(self) -> list[RoleEntity]:
|
|
roles = self.roles_repository.get_all()
|
|
return [
|
|
RoleEntity(
|
|
id=role.id,
|
|
title=role.title,
|
|
) for role in roles
|
|
]
|
|
|
|
def get_by_id(self, role_id: int) -> Optional[RoleEntity]:
|
|
role = self.roles_repository.get_by_id(role_id)
|
|
if role:
|
|
return RoleEntity(
|
|
id=role.id,
|
|
title=role.title,
|
|
)
|
|
|
|
return None
|
|
|
|
def create(self, role: RoleEntity) -> RoleEntity:
|
|
role_model = Role(
|
|
title=role.title,
|
|
)
|
|
created_role = self.roles_repository.create(role_model)
|
|
return RoleEntity(
|
|
id=created_role.id,
|
|
title=created_role.title,
|
|
)
|
|
|
|
def update(self, role_id: int, role: RoleEntity) -> Optional[RoleEntity]:
|
|
role_model = self.roles_repository.get_by_id(role_id)
|
|
if role_model:
|
|
role_model.title = role.title
|
|
updated_role = self.roles_repository.update(role_model)
|
|
return RoleEntity(
|
|
id=updated_role.id,
|
|
title=updated_role.title,
|
|
)
|
|
|
|
return None
|
|
|
|
def delete(self, role_id: int) -> bool:
|
|
return self.roles_repository.delete(role_id) is not None
|