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