from typing import Optional from sqlalchemy.orm import Session from app.application.step_tasks_repository import StepTasksRepository from app.domain.entities.step_tasks_entity import StepTaskEntity from app.domain.models.step_tasks import StepTask class StepTasksService: def __init__(self, db: Session): self.step_tasks_repository = StepTasksRepository(db) def get_all(self) -> list[StepTaskEntity]: step_tasks = self.step_tasks_repository.get_all() return [ StepTaskEntity( id=step_task.id, text=step_task.text, step_id=step_task.step_id, type_id=step_task.type_id, ) for step_task in step_tasks ] def get_by_id(self, step_task_id: int) -> Optional[StepTaskEntity]: step_task = self.step_tasks_repository.get_by_id(step_task_id) if step_task: return StepTaskEntity( id=step_task.id, text=step_task.text, step_id=step_task.step_id, type_id=step_task.type_id, ) return None def create(self, step_task: StepTaskEntity) -> StepTaskEntity: step_task_model = StepTask( text=step_task.text, step_id=step_task.step_id, type_id=step_task.type_id, ) created_step_task = self.step_tasks_repository.create(step_task_model) return StepTaskEntity( id=created_step_task.id, text=created_step_task.text, step_id=created_step_task.step_id, type_id=created_step_task.type_id, ) def update(self, step_task_id: int, step_task: StepTaskEntity) -> Optional[StepTaskEntity]: step_task_model = self.step_tasks_repository.get_by_id(step_task_id) if step_task_model: step_task_model.text = step_task.text step_task_model.step_id = step_task.step_id step_task_model.type_id = step_task.type_id updated_step_task = self.step_tasks_repository.update(step_task_model) return StepTaskEntity( id=updated_step_task.id, text=updated_step_task.text, step_id=updated_step_task.step_id, type_id=updated_step_task.type_id, ) return None def delete(self, step_task_id: int) -> bool: return self.step_tasks_repository.delete(step_task_id) is not None