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(s.id, 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(status.id, 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(created_status.id, 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(status_model.id, status_model.name) return None def delete_status(self, status_id: int) -> bool: return self.repository.delete(status_id) is not None