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

69 lines
2.4 KiB
Python

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