skill-forge/API/app/infrastructure/roles_service.py

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