from typing import List, Optional from sqlalchemy.orm import Session from app.core.entities.status import StatusEntity from app.infrastructure.database.models.statuses import Status from app.infrastructure.database.repository.status_repository import StatusRepository class StatusService: def __init__(self, db: Session): self.repository = StatusRepository(db) def get_all_statuses(self) -> List[StatusEntity]: statuses = self.repository.get_all() return [ StatusEntity( id=s.id, name=s.name, ) for s in statuses ] def get_status_by_id(self, status_id: int) -> Optional[StatusEntity]: status = self.repository.get_by_id(status_id) if status: return StatusEntity( id=status.id, name=status.name, ) return None def create_status(self, entity: StatusEntity) -> StatusEntity: status_model = Status(name=entity.name) created_status = self.repository.create(status_model) return StatusEntity( id=created_status.id, name=created_status.name, ) def update_status(self, status_id: int, entity: StatusEntity) -> Optional[StatusEntity]: status_model = self.repository.get_by_id(status_id) if status_model: status_model.name = entity.name self.repository.update(status_model) return StatusEntity( id=status_model.id, name=status_model.name, ) return None def delete_status(self, status_id: int) -> bool: return self.repository.delete(status_id) is not None